2011-01-21 37 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 

這對我的作品。希望這可以幫助你,或者至少讓你指向正確的方向!