コメント欄を先にご覧ください。現在の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
関連付けを行うと、
この一文で書き換えることができるようになる。