0
0

More than 1 year has passed since last update.

【備忘録】【Rails】new + save と create の違い

Posted at

どちらもレコードをつくるときのメソッドですが、何が違うのだろうと疑問に思ったので調べました。

new + save を使うべき場合

①コントローラー内で、条件分岐させたいとき

例えばArticleモデルでバリデーションの設定をしていて、
保存時にバリデーションを適用させたいときにはif文等で条件分岐の記述をしますが、
その場合は以下のようにnew + save メソッドを使います。
理由:createメソッドでは、たとえ保存に失敗してもオブジェクトを返すためif文がtrueとなり成功時の処理を行ってしまうからです。

def create
    @article = Article.new(article_params)
    if @article.save
      redirect_to("該当パス")
    else
      flash.now[:alert] = '文字を入力してください。'
      render :index
    end
end

②view側で使いたいとき

例えば Book モデルを操作する BooksController があったとする。
new アクションを

def new
  @book = Book.new
end

などと書いておいて、この @book を入力フォームで使いたい、そんな場合にもnew + save を使う。

create を使うべき場合

インスタンス生成と保存を同時に行いたいとき。

参考にさせていただいた記事

【Rails】createメソッドとnew + saveメソッドの違い

【Rails】newとcreateの違い

newとcreateの違い

new,save,createアクションそれぞれの使い分け

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0