45
42

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

newとbuildの違い

Last updated at Posted at 2016-02-29

コメント欄を先にご覧ください。現在のrailsのバージョンはbuildはnewのaliasで、newと同じメソッドです。
なので、以下の説明はbuildがnewのalias化される前のrailsのバージョンの説明となります。

newメソッドとbuildメソッドはともにインスタンスを生成するが、
buildは自動的にuser_idをセットしてインスタンスを生成することができる。

user.rbに「has_many :posts」があると、「Userインスタンス.posts.build」というメソッドが使える」ようになる。これは「Userインスタンスに紐付いたPostインスタンスを生成する」メソッド。

@post = Post.new

@post = @user.posts.build

@post = @user.posts.buildは、@post = Post.new(user_id: @user.id)と同じ。

post_controller.rb

def create
  @post = Post.new(post_params)
  @note.user.id = current_user.id
end

このcreteの定義が、

post_controller.rb

def create
  @post = current_user.posts.build(post_params)
end

関連付けを行うと、
この一文で書き換えることができるようになる。

45
42
5

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
45
42

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?