2010-12-03 26 views
3

2つのモデルを2つの方法でRails 3アプリケーションに関連付けようとしています。人々は多くのペットを飼っており、それぞれの人は1人の好きなペットを持つことができます。2つのモデル間の複数の関連付けを

正しいアソシエーションと外部キーを使用していますか?

私は実際に私がperson.favorite_pet_idないときに、2つの異なる番号を取得し、あなたは人のテーブルにfavorite_pet_idを持っているように見えるので

class Person < ActiveRecord::Base 
    has_many :pets # pets table has a person_id 
    has_one :favorite_pet, :class_name => 'Pet' # persons table has favorite_pet_id 
end 


class Pet < ActiveRecord::Base 
    belongs_to :person # using person_id in pets table 
end 

答えて

4

をperson.favorite_pet.idあなたが使用する必要があります(あなたが必要として)次のように「has_one」ではなく「belongs_to」の関連付けを行います。

class Person < ActiveRecord::Base 
    has_many :pets # pets table has a person_id 
    belongs_to :favorite_pet, :class_name => 'Pet' # persons table has favorite_pet_id 
end 


class Pet < ActiveRecord::Base 
    belongs_to :person # using person_id in pets table 
end 

これで問題は解決します。私はこれが助けて欲しい!

+0

ありがとう、私は本当にあなたの愚かな質問に答えることに感謝します。これはうまくいった。私は "属している"ことを見落としました。なぜなら、関係を説明するようには見えないからですが、今はRailsのコンテキストでどのように動作するかを見ています。 –

+0

私は同意します、 "belongs_to"は必ずしも現実の世界に完全に合っているとは限りません。時間の99%を稼働します。たぶんペットの場合は、後で誰が掃除するのかを覚えておくことができます:) –

関連する問題