belongs_to の使い方
class Review < ApplicationRecord
belongs_to :food
end
belongs_to の解説
-
belongs_toは、このモデルが別のモデルに属している(関連している) ことを示す。 -
belongs_to :foodを指定すると、Reviewモデルにはfood_idという 外部キー が必要になる。 -
ReviewのインスタンスからFoodのデータを簡単に取得できる。
belongs_to をつけるとできること
-
review.foodで、そのReviewに紐づくFoodを取得できる。 -
Reviewにfood_idの外部キー制約を設定できる。 -
データの整合性を保ちやすくなる(関連する
Foodが削除されたらどうするかの設定も可能)。
has_many の使い方
class Food < ApplicationRecord
has_many :reviews
end
has_many の解説
-
has_manyは、このモデルが複数の関連レコードを持つ ことを示す。 -
has_many :reviewsを指定すると、Foodモデルから関連するReviewの一覧を取得できる。 -
Foodに紐づくReviewを管理しやすくなる。
has_many をつけるとできること
-
food.reviewsで、そのFoodに紐づくすべてのReviewを取得できる。 -
dependentオプションを使うことで、親データ削除時の動作を制御 できる(例:dependent: :destroyでFood削除時にReviewも削除される)。 -
has_many :throughを使えば 中間テーブルを利用した多対多の関係 も作成可能。
belongs_to & has_many のまとめ
| 関係性 | 記述 | できること |
|---|---|---|
| 1対多の「多」側 | belongs_to :food |
Review から food にアクセス可能 (review.food) |
| 1対多の「1」側 | has_many :reviews |
Food から reviews にアクセス可能 (food.reviews) |