これは、Rails のhas_many :through 関連付けの完璧な使い方のように思えます。meet_events
結合テーブルが必要です。テーブルには、関連付けられている会議を指すmeet_events
外部キー (belongs_to)列と、利用可能なイベントの 1 つを指す列があります。モデルは と を使用します。これにより、この大会に関連付けられたイベント オブジェクトを取得できます。meet_id
event_id
Meet
has_many :meet_events
has_many :events, :through => :meet_events
このMeetEvent
モデルには単純に 2 つの がありbelongs_to
ます。1 つは 用、meet
もう 1 つは 用event
です。
以下は、単純なモデルのセットです。
class Meet < ActiveRecord::Base
has_many :meet_events
has_many :events, :through => :meet_events
end
class Event < ActiveRecord::Base
has_many :meet_events
has_many :meets, :through => :meet_events
end
class MeetEvent < ActiveRecord::Base
belongs_to :meet
belongs_to :event
end
以下は、一部のデータとそのモデル化の例です。
会う
id | name
------------------
1 | Meet 1
2 | Meet 2
イベント
id | name
------------------
1 | Event 1
2 | Event 2
3 | Event 3
ミートイベント
id | meet_id | event_id
----------------------------
1 | 1 | 1
2 | 1 | 3
3 | 2 | 2
4 | 2 | 3
Meet 1
これは基本的にEvent 1
とを含むモデリングですEvent 3
。Meet 2
とがEvent 2
ありEvent 3
ます。これはまた、特定のものに何が入っているかを尋ねるという利点もありますEvent
。たとえば、event.meets
いつevent
イベント 3 であるかを呼び出すMeet 1
とMeet 2
、そのイベントが含まれていることがわかります。