2011-01-25 141 views
0

我试图做到这一点在Rails的3.我创建一个表(在代码示例语法可能不完全正确,我想从内存中重建):在Ruby on Rails中,如何创建一个表中引用同一个表的字段的表/模型?

create_table "persons", :force => true do |t| 
    t.string "name" 
    t.integer "guest_of_id" 
end 

而且我想guest_id引用另一个在人表中排。每个人只有一个人的客人。因此,在模型我建立的关联:

class Person < ActiveRecord::Base 
    belongs_to :GuestOf, :class => "Person", :foreign_key => "guest_of_id" 
end 

然而,当我尝试引用guestOf场

a_person.GuestOf.name 

我得到的错误

undefined method 'eq' for nil:NilClass 

这可能对Rails ?难道我做错了什么?我错过了一个has_many关系吗?我强烈怀疑我的Google-Fu让我失望。我找到的唯一可能的解决方案是http://railscasts.com/episodes/163-self-referential-association,但他正在建立多对多的关系,我认为它比我想要做的更复杂。

谢谢。

回答

2

你真的应该能够只是做:

class Person < ActiveRecord::Base 
    belongs_to :host, :class => "Person", :foreign_key => "guest_of_id" 
    has_one :guest, :class => "Person", :foreign_key => "guest_of_id" 
end 
相关问题