はじめに
本記事は、プログラミングの学習を始めて1ヶ月の初学者が、学習を進めていて疑問に思った点について調べた結果を備忘録も兼ねてまとめたものです。
そのため、記事の内容に誤りが含まれている可能性があります。ご容赦ください。
間違いを見つけた方は、お手数ですが、ご指摘いただけますと幸いです。
今回の疑問点
今回の疑問点は、
new
とbuild
の使い分け
です。
以前、フォロー/フォロワー機能の実装の際に出てきてnewメソッド
との使い分けについて疑問を抱きました。
今回、調べて見てわかったことをまとめます。
疑問点についての解説
###結論
インスタンスを生成するメソッドという点では共通しているが、モデルの関連付けの際にはbuild
を使用する。
###buildメソッドの記述方法
モデルの関連付けの際に使用すると記載しましたが、アソシエーションの状況によって記述の仕方が異なるようです。
####アソシエーションが1対1の場合
@user = User.new
@card = @user.build_card
アソシエーションが1対1の場合には、build_関連付けのメソッド名
と記述します。
####アソシエーションが1対1の場合
@user = User.new
@card = @user.build_card
####アソシエーションが1対多の場合
@user = User.new
@card = @user.cards.build
アソシエーションが1対多の場合には、関連付けのメソッド名.build
と記述します。
####アソシエーションが1対多の場合
@user = User.new
@group = @user.groups.build
アソシエーションが1対多の場合には、1対多と同様に関連付けのメソッド名.build
と記述します。
まとめ
最後にポイントをまとめます。
- buildアクションはモデルの関連付けの際に使用する。
- buildアクションの記述方法は以下の通り。
- アソシエーションが1対1:
build_関連付けのメソッド名
- アソシエーションが1対多又は多対多:
関連付けのメソッド名.build