多対多のモデルの扱い
普通、多対多のモデルであれば中間テーブルを作成し、has_many :through
で関連付けを行うと思います。
また、1つのmodelが複数のmodelに所属している場合はポリモーフィック関連付けを使うと思います。
具体的な話
全部で3つのmodelがあります。
Restaurant、StationGroup、Station の3つです。
StationGroupは、多くのStationを持ちます。例を挙げますと、東京駅です。東京駅といっても山手線なのか東海道線なのか、横須賀線なのかでStationを分けて考えているため、それをまとめるのがStationGroupの東京駅です。つまり、
StationGroup has_many :stations Station belongs_to :station_group
Restaurantは、一つのStationGroupに属します。つまり
StationGroup has_many :restaurants Restaurant belongs_to :station_group
ここまでは問題ないのですが、イメージがつかめていないのはRestaurantとStationの関連付けです。
RestaurantとStationは、StationGroupを挟んで多対多の関係です。
しかしながら、普通の中間テーブルとは異なり、独自のidを持ちそれを媒介して2つのmodelがつながっています。ここでいう普通とは、こちらのような場合に関してです。
まだまだRailsに関して知識と経験がなく、これら2つはhas_many :through
で関連付けを行うべきものなのか、それとも別に関連付けを行うのか、はたまたこの2つは関連付けるべきでないのか判断に困っています。
よろしくお願いします。
回答1件
あなたの回答
tips
プレビュー