Railsでnewとbuildのちがい

  • 43
    いいね
  • 2
    コメント
この記事は最終更新日から1年以上が経過しています。

例えばブログアプリケーションを作成するために以下のようなアソシエーションを作ったとする。

$ rails g scaffold post title:string body:text
$ rails g scaffold comment post:references body:text

Commentのコントローラーには所属するpostをインスタンス変数に呼び出す。
フィルタを使う。

class CommentsController < ApplicationController
  before_filter :load_post

  def load_post
    @post = Post.find(params[:post_id])
  end

ここでお馴染みのnewメソッドでインスタンスを作成している

Comment.new

@post.comments.build

buildを使うと親モデルに対する外部参照キーを自動でセットできるらしい。
結構よく出てくるので覚えておく。