2つの単一テーブル継承モデルの関係
-
19-09-2019 - |
質問
私は、次の2つのモデルがあります。
class ContactField < ActiveRecord::Base
end
class Address < ContactField
end
class Phone < ContactField
end
と
class Contact < ActiveRecord::Base
end
class Company < Contact
end
class Person < Contact
end
私は1つの接触、関係なく、企業や個人、多くのContactFields(アドレスと電話を)持っている...だからここで私はそれらを置く必要があるのは多くを持っていると <所属したいです/ strong>の? おかげ
解決
あなたはすでに平易な英語:-)でそれを言った。
私は1つの接触をしたい、どんなにそれが多くのContactFields(アドレスと電話を)持っている、企業や個人である...だからここで私はそれらの多くを持っており、に属して置く必要がありますか?おかげ
class Contact < ActiveRecord::Base has_many :contact_fields end class ContactField < ActiveRecord::Base belongs_to :contact end
この関係は、住所と電話の両方に継承されます。
他のヒント
あなたが関係に属して記述しているように見えます。協会は、親クラスで定義する必要がありますので、彼らはサブクラスに継承することができます。
class ContactField < ActiveRecord::Base
belongs_to :contact
belongs_to :company, :foreign_key => :contact_id
belongs_to :person, :foreign_key => :contact_id
end
class Contact < ActiveRecord::Base
has_many :contact_fields
has_many :addresses
has_many :phones
end
ただし、@ contact.contact_fieldsだけContactFieldレコードを返します。あなたは、サブクラスのいずれかで定義されたメソッドが必要な場合は、常にメソッドになり使用することができます。その周りにいくつかの方法があります。私が行ったような、余分な関連付けを追加します。またははActiveRecord ::ベース#を使用してになります。
所属していません StackOverflow