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 ) |