質問

私は、次の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 ::ベース#を使用してになります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top