続き④
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: アソシエーションでオブジェクトを作るとき