2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【Rails】newメソッドとbuildメソッドの使い分け方【初学者の疑問点を簡潔に解説】

Posted at

はじめに

 本記事は、プログラミングの学習を始めて1ヶ月の初学者が、学習を進めていて疑問に思った点について調べた結果を備忘録も兼ねてまとめたものです。
 そのため、記事の内容に誤りが含まれている可能性があります。ご容赦ください。
 間違いを見つけた方は、お手数ですが、ご指摘いただけますと幸いです。

今回の疑問点

 今回の疑問点は、

  newbuildの使い分け
 
 です。 

 以前、フォロー/フォロワー機能の実装の際に出てきて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
2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?