Ruby
Rails

Railsでnewとbuildのちがい

More than 5 years have passed since last update.

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

$ 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を使うと親モデルに対する外部参照キーを自動でセットできるらしい。
結構よく出てくるので覚えておく。