Ruby on Railsのnewとbuildって何が違うの?

Ruby on RailsでModelをnew, buildで生成する場合の違いについてです。

newについて

newは通常のインスタンス生成に使われます。

@user = User.new

こんな感じでその後にデータを設定し、saveして保存となります。

通常の使い方だと思います。

buildについて

buildは関連したDBテーブルがある場合に役立ちます。

例えば、UserテーブルとItemテーブルが関連づいていた場合。

User (1) – Item (N) の場合とします。

@item = @user.items.build

※@userは(id: 1, name: XXXX, age: XXなど適当なデータが保存されているものとする)

 

このようにbuildを使うことによって@userに紐付いたItemインスタンスを生成することができます。

 

関連するテーブルのインスタンスを生成する場合は可読性も上がるため使っていきたいですね。

 

なにか参考になれば幸いです(*^^*)