2012-06-10 44 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"