前提
Progateでrailsの勉強をしています。
postというモデルにバリデーションを設置し、空の投稿データを保存・編集できないようにします。
そしてpostのコントローラに「保存できた」、「保存できなかった」の条件分岐をcreateというアクションに記述しました。(該当のソースコード、を参考してください)
質問
saveメソッドを条件式に書いているのにそのまま実行されていました。なぜでしょうか?
参考できるリファレンスなどあれば教えていただけると嬉しいです。
私の考え
下記コードのif @post.save
の部分ですが、これは@post.save
が成功したかどうかを評価しているだけであって実際は処理しないので、もし「true」なら次の行にもう一回@post.save
を書かないといけないと考えています。しかし、もう一回書かなくても、投稿データを保存できました。
今まで「if x < 20」のような条件式しか見たことがありませんでしたので、少し混乱しています。。。
色々調べてみたのですが同じような質問を見つけられませんでした。そもそもifに関係する問題なのか、saveメソッドの問題なのか、分からなくて質問しました。
該当のソースコード
(著作権の関係で少し変えています)
ruby
1def create 2 @post = Post.new(content: params[:content]) 3 if @post.save 4 flash[:notice] = "保存しました" 5 else 6 redirect_to("/posts/index") 7 end 8end
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/05/14 09:15
2021/05/14 09:25