木村勇土の備忘録

新たな発見・勉強になったこと・見分が広がったこと・覚えておきたいこと

続き④

1.アソシエーションの使い方

$ r = restaurant.first(このレストラン(今回は最初の)を定義)

$ r.user.comment.menu (このレストランのコメントの中のmenu)

ex.お気に入りの場合 

$ r.favorite_users[0].name(このレストランの最初のお気に入りした人)

$ r.favorite_users.first.name(同上)

 

ex.アソシエーションにsource: :userを書いてない場合

$ r.favorites.map{ |favorite| favorite.user.name }

(mapで配列で入ってくる)

※has_manyメソッドの変数は配列になっている

 

2. find_byとfindとwhereの違い

find(100)  → id:100がない場合はエラーになる

find_by(id: :100) → 100がなくても「nil」が返ってくる

where(id: :100 ) → 配列で返ってくる。なので何人も表示できる

上記により、findの変数は単数に、whereの変数は複数にするべき。

 

3.newとbuildの使い分け方

new: クラスとインスタンスでオブジェクトを作るとき

build: アソシエーションでオブジェクトを作るとき