这听起来像是 Rails has_many :through 关联的完美使用。你应该有一个meet_events
连接表。该meet_events
表中将有一个外键 (belongs_to)meet_id
列,该列指向与其关联的会议,其中一个event_id
列指向可用事件之一。您的Meet
模型将使用has_many :meet_events
and has_many :events, :through => :meet_events
。这将允许您获取与此会议关联的事件对象。
该MeetEvent
模型只有两个belongs_to
. 一个用于meet
,一个用于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
meet_events
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
。例如,调用事件 3 的event.meets
时间event
,它会告诉您两者Meet 1
并Meet 2
在其中包含该事件。