Rails:has_many:through或has_many_and_belongs_to?

我有一个应用程序,我想通过另一个模型(即Task1> Relationship <Task2)将模型的实例链接到同一模型的另一个实例,我想知道我是否可以使用has_many:through。

基本上,关系模型将具有额外信息(type_of_relationship,lag),因此将其作为连接模型是理想的。 但是,没有两个模型可以加入,只有一个……自己。 has_many:还能继续吗? 如果是这样,联接表将如何显示? 使用Rails约定,您将有两个名为Activity_id的列,这显然不适用于数据库。

或者,我可以使用has_many_and_belongs_to在任务模型和关系模型之间设置多个但我不确定这是否准确地描述了一个只能在任何一个关系模型中链接两个任务模型的关系(当然,当然任务可能属于多个关系,因此可能属于多个关系。

我的直觉说与has_many_and_belongs_to一起使用并整理模型中的规则但是有更好的方法吗? 我正绕着这一圈转圈!

任何帮助赞赏。

has_many:完全符合你的情况。 我不知道您的模型的具体细节,但是假设您有用户,并且每个用户都可以将其他用户作为联系人。 您可以按如下方式对此情况建模:

class User < ActiveRecord::Base has_many :contact_records, :foreign_key => :owner_id has_many :contacts, :through => :contact_records, :class_name => "User" end class ContactRecord < ActiveRecord::Base belongs_to :owner, :class_name => "User" belongs_to :user end