ActiveRecordのnewとbuild

ActiveRecordでモデル間の関連を定義している場合でインスタンス化する時にnewでなくてbuildを使うとコードがすっきりする。
これはパーフェクトRuby on Railsを読んでいて「へー」って思ったのでメモ。

例えばUserとMovieで1対多の関係がある場合は以下のように書ける

     @user = User.new(name: 'hoge', age: 30)
     @user.save
     movie = @user.movies.build(title: movie_params[:title], 
                                                 description: movie_params[:description],
                                                 rate: movie_params[:rate])

このようにbuildを使うと既に@userと関連されて状態でインスタンス化されます。
今度は1対1の場合はどうなのかというと

photo = movie.build_photo(title: photo_params[:title],
                                    url: photo_params[:url])

build_[モデルクラス名]といメソッドを使えば同じ事ができます。
恥ずかしながら、この辺りのメソッドをちゃんと分かってなかった。色々便利なメソッドあるなー。
これでコードの行数も減らすこともできました。