2011-01-21 32 views
1

因此,继承人的交易..我正在写一个Rails应用程序来管理联系人数据..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%正确的bu它晚了,我一直在与服务器作斗争,所以请原谅我!

我听说你要做的哈克SQL做的各种..

谢谢!

丹尼尔

+0

在涉及模型的问题中,您应该显示其结构,以便我们知道它们之间的确切关联。无论如何,你展示的例子都很奇怪。 – tokland 2011-01-21 21:43:03

+0

嘿@tokland ..它只是一个简单的家庭关系,即一个人有一个家庭成员,而这个家庭成员可能是兄弟姐妹,父亲或母亲等,但这些人仍然是人,所以他们仍然应该属于这个人模型,我只是想知道我怎么可以让很多人相互关联,并附上一些数据的关系..即他们是相关的,因为他是他的父亲..有道理? – 2011-01-21 21:59:23

回答

2

我在以前我的一个项目也有类似的情况。我去了如下设计:

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 

这对我的作品。希望这可以帮助你,或者至少让你指向正确的方向!