2012-06-10 84 views
5

我有以下Person類有一個父母也是另一個人。我似乎無法弄清楚如何讓關係發揮作用。has_one與同類的關係

class Person < ActiveRecord::Base 
    attr_accessible :mom, :dad 

    has_one :mom, :class_name => 'Person', :primary_key => "mom_id", :foreign_key => "id" 
    has_one :dad, :class_name => 'Person', :primary_key => "dad_id", :foreign_key => "id"  
end 

我已將「mom_id」和「dad_id」作爲整數添加到具有遷移的模型中。但是,當我使用rails console時,在設置mom_iddad_id後,我無法訪問momdad屬性。他們仍然返回nil

任何指向我在做什麼錯?

+0

如果你這樣做的時候,將不是Person對象被創建無限數量。 'Person1有一個人擁有另一個擁有第三個人的人,等等......' – ShaggyInjun

+0

好吧,數據庫只有這麼大,所以它不能是無限的......但理論上,是的。這只是我實際使用情況的一個簡單例子,但它沒有這個問題。 – jasonlfunk

+0

'has_one'並不意味着一個模型必須有另一個模型。它實際上意味着它最多隻能有一個對象。 – cdesrosiers

回答

8

我@Andrew同意,這應該是belongs_to

belongs_to :mom, :class_name => "Person", :foreign_key => "mom_id" 
belongs_to :dad, :class_name => "Person", :foreign_key => "dad_id"