繁体   English   中英

Rails多对多同类双向关系..如何?

[英]Rails many-to-many same class bi-directional relationship.. how?

所以这笔交易..我正在编写一个Rails应用程序来管理联系人数据。

我有一个联系人模型,该联系人需要有许多家庭成员(仍然是联系人类)..该关系需要关联的关系数据..即

ContactA | ContactB | Relationship
1          2          Contact A is Contact B's Father

我如何关联同一个类的2个对象并附加一些数据,并能够像这样双向遍历te关系:

@guy1 = Contact.find(1) #Guy A
@guy1.family_relationships
>>> [[guyb, "f"], [guyc, "s"]]
@guy2 = @guy1.family_members.first
@guy1.family_members
>>> [[guya]]

那可能不是100%正确的,但是它的后期和我整天都在与服务器争斗,所以请原谅我!

我听说您必须使用各种hacky SQL来执行此操作。

谢谢!

丹尼尔

我之前的一个项目中也遇到过类似情况。 我采用以下设计:

class Patient < AR::Base
  has_many :relatives, :dependent => :destroy do
    def husband
      select { |r| r.relation.eql?('Husband').first
    end

    def father
      select { |r| r.relation.eql?('Father').first
    end

    ... 

    def sons
      select { |r| r.relation.eql?('Son')
    end
    ...
  end
end

class Relative < AR::Base
  belongs_to :patient

  validates :relation, 
    :inclusion => { 
      :in => %w( Husband Daughter Son Father Mother Brother Sister )
    }
end

这对我有用。 希望这可以帮助您或至少为您指明正确的方向!

感谢您的出色回答,但在此处找到了答案:

http://railscasts.com/episodes/163-self-referential-association

Railscasts很棒!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM