Ruby on rails 如何在同一两个表之间建立多对多关系

Ruby on rails 如何在同一两个表之间建立多对多关系,ruby-on-rails,activerecord,many-to-many,ruby-on-rails-3,Ruby On Rails,Activerecord,Many To Many,Ruby On Rails 3,我有一个俱乐部的模型,我想在那里模拟两个实体的会议和会员 然而,这些实体之间实际上存在两种多对多关系,对于任何会议,成员都可以是发言人或来宾。现在我是一个OO思考者,所以我通常只创建两个类,每个类的内部都有两个数组,但是rails让我觉得这里更以数据为中心,所以我意识到我需要打破这些M2M与连接表演讲者和来宾的关系,我已经这样做了,但是现在我在描述模型中的关系时遇到了困难 这两个联接表模型都有“属于:会议”和“属于:成员”,我认为这就足够了 不过,我对会议和会员模式并不确定 每个人都有“has_

我有一个俱乐部的模型,我想在那里模拟两个实体的会议和会员

然而,这些实体之间实际上存在两种多对多关系,对于任何会议,成员都可以是发言人或来宾。现在我是一个OO思考者,所以我通常只创建两个类,每个类的内部都有两个数组,但是rails让我觉得这里更以数据为中心,所以我意识到我需要打破这些M2M与连接表演讲者和来宾的关系,我已经这样做了,但是现在我在描述模型中的关系时遇到了困难

这两个联接表模型都有“属于:会议”和“属于:成员”,我认为这就足够了

不过,我对会议和会员模式并不确定

每个人都有“has_许多:来宾”和“has_许多:演讲者”,但我不确定我是否也想去: 有很多:会员,:至=>:客人 有许多:成员,:至=>:发言者

但我怀疑这就像宣布两个“成员”将发生冲突

我还想到: 有很多:客人,:通过=>:客人 有许多:演讲者,:至=>:演讲者

这有意义吗?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

谢谢你的回复。我试过了,尽管:class_name不支持:through,using:source可以工作。现在我只需要和表单、控制器、路由器等打交道。我不确定我是想使用成员控制器,还是来宾和扬声器控制器。我现在的表单寻找一个成员控制器,所以我将首先尝试…哦,对了,对不起。我将为未来的读者编辑答案。考虑到它的价值,我可能会设计成这样的
有很多:成员,:通过=>:registrations
有很多:演讲者,:通过=>:speaker\u注册,:source=>'Member'