如何在同一个两个表之间执行多个多对多关系

时间:2010-06-01 14:00:49

标签: ruby-on-rails activerecord many-to-many ruby-on-rails-3

我有一个俱乐部模型,我想模拟会议和会员这两个实体。

实际上,这些实体之间存在两个多对多关系,对于任何会议,会员可以是演讲者或访客。现在我是一个OO思想家,所以通常只会创建两个类,每个类只有另一个内部的两个数组,但是rails让我觉得这里有更多以数据为中心,所以我意识到我需要打破这些M2M与联接表的关系我已经完成了演讲者和嘉宾,但现在我无法描述模型中的关系。

两个连接表模型都有“belongs_to:meeting”和“belongs_to:member”,我认为这应该足够了。

但我对会议和会员模型不太确定。

每个人都有“has_many:来宾”和“has_many:发言人”,但我不确定我是否也想去: has_many:members,:through => :客人 has_many:members,:through => :扬声器

但我怀疑这就像声明会发生冲突的两个“成员”。

我也想过: has_many:来宾,:通过=> :客人 has_many:speaker,:through => :扬声器

这有意义吗? ActiveRecord如何知道他们实际上是会员?

我找到了大量的m2m关系和m2m关系的例子,其中1个表引用了自己,但没有很好的例子来帮助我模拟这种情况,其中两个独立的表有两个不同的m2m关系。

有人有任何提示吗?

1 个答案:

答案 0 :(得分:2)

您需要选择不同的关联名称,然后指定模型:

class Meeting
  has_many :guests
  has_many :speakers
  has_many :guest_members, :through => :guests, :source => 'Member'
  has_many :speaker_members, :through => :speakers, :source => 'Member'
end
相关问题