0

これはよくある問題であるに違いないので、Googleがこれ以上回答を出さなかったことに驚いています。私はいくつかの異なる種類のエンティティを持つRailsアプリに取り組んでいます。それらのエンティティは、異なるエンティティとの関係が必要です。例えば:

  1. Address:番地の詳細を格納するモデル(これは私の共有エンティティです)
  2. PersonContact:自宅の電話、携帯電話、メールアドレスなどを含むモデル。このモデルには、アドレスが関連付けられている必要があります
  3. DogContact:明らかに、犬に連絡したい場合は、犬が住んでいる場所に行かなければなりません。

したがって、PersonContactDogContactの外部キーが必要Addressです。たとえ、それらは実際にはの「所有」オブジェクトですがAddress。これはaccepts_nested_attributes_for、外部キーがAddress正しく機能することを期待していることを除いて、問題ありません。

外部キーを保持するが、所有オブジェクトであり続けるための正しい戦略はAddressPersonContactですかDogContact

4

1 に答える 1

0

多態的な関連付けを使用する必要があると思います。

そのためには、テーブルにとを追加する必要がありaddressable_idます。そして、モデルは次のようになります。addressable_typeaddresses

class Address < ActiveRecord::Base
   belongs_to :addressable, :polymorphic => true    
end 

class PersonContact < ActiveRecord::Base 
   has_one :address, :as => :addressable
end

class DogContact < ActiveRecord::Base 
   has_one :address, :as => :addressable
end
于 2010-06-14T12:16:46.297 に答える