はじめに

modelのnewとbuildをネットで見ると濫用していて使い道がわからなかったので調べてみました。

new/buildについて

以下、ドキュメントよりbuildはnewのエイリアスと記載されていました。そのため機能的には全く同じようです。

参考:
newについて
http://railsdoc.com/references/new
buildについて
http://railsdoc.com/references/build

暗黙的な使い方の違いについて

どちらも同じということですが、やはり使い分けには暗黙のルール(コーディングルール)があるようです。

例えば、Postsテーブル(投稿用)とComments(投稿に対するコメント)の場合、カーディナリティは1:Nになります。
その場合にPostsにはnew、その子に当たるCommentsにはbuildという具合に関係性を表す場合に使い分けているようです。
modelクラスではPostsはhas_manyで:comments、Commentsはbelong_toで:postsという関係性です。

Posts[1]

Posts.new

Comments[N]

Comments.posts.build

その他おすすめの備忘録

Tagged with:
 

コメントを残す