2011-01-25 50 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 
相關問題