2011-01-25 10 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人のテーブルの行。それぞれの人は一人のゲストだけです。だから私は関連を設定するモデルに:私はguestOfフィールドに

a_person.GuestOf.name 

を参照しようとすると、

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

しかし、私はエラー

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 
関連する問題