我有一个俱乐部的模型,我想模拟会议和会员这两个实体.
实际上,这些实体之间存在两个多对多关系,对于任何会议,会员可以是演讲者或访客.现在我是一个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关系.
有人有任何提示吗?
最佳答案 您需要选择不同的关联名称,然后指定模型:
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