これは、Rails のhas_many :through 関連付けの完璧な使い方のように思えます。meet_events結合テーブルが必要です。テーブルには、関連付けられている会議を指すmeet_events外部キー (belongs_to)列と、利用可能なイベントの 1 つを指す列があります。モデルは と を使用します。これにより、この大会に関連付けられたイベント オブジェクトを取得できます。meet_idevent_idMeethas_many :meet_eventshas_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、そのイベントが含まれていることがわかります。