如何在Rails上进行自引用?

| 我想在RoR应用程序中自引用模型,但是我不知道具体如何。我想保存一个链表,其中下一个节点具有上一个的ID。我该怎么做?这是一对一的关系。     
已邀请:
最简单的方法:
class MyModel < ActiveRecord::Base
  belongs_to :parent, :class_name => \'MyModel\'
  has_many :children, :class_name => \'MyModel\', :foreign_key => \'parent_id\'
end
    
护栏5 在用户表中添加xxx_id列: 在迁移文件中:
add_reference :users, :xxx, index: true
并在用户模型中添加代码
has_many :users, class_name: \'User\', foreign_key: \'xxx_id\'
belongs_to :manager, class_name: \'User\', foreign_key: \'xxx_id\'
如果您不是每个用户都有一个经理,则需要添加可选:true。 \'foreign_key \'不是必需的。默认情况下,它被认为是此类的名称,小写并带有“ _id”后缀。 如果Foreign_key是user_id,则用户没有管理员的必要。 结果是:
has_many :users, class_name: \'User\'
belongs_to :manager, class_name: \'User\', optional: true
    
我花了一些时间尝试使用Rails 3.2.14使其工作 该文档中关于“自加入协会”的建议不适用于“ 4”协会。添加外键可解决此问题。
Class User < ActiveRecord::Base
  has_many :invitees, class_name: \'User\', foreign_key: :invited_by
  belongs_to :host, class_name: \'User\', foreign_key: :invited_by
end
    
也可以在此处查看Ryan Bates关于自我参照关联的本教程。 Hck的答案会起作用,但对我来说,我需要一个JOIN表,因此我通过Rails关联使用has_many。祝好运!     

要回复问题请先登录注册