这听起来像是 Rails has_many :through 关联的完美使用。你应该有一个meet_events连接表。该meet_events表中将有一个外键 (belongs_to)meet_id列,该列指向与其关联的会议,其中一个event_id列指向可用事件之一。您的Meet模型将使用has_many :meet_eventsand 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在其中包含该事件。