我有以下两个模型
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
我想要一个联系人,无论是公司还是个人,都有很多ContactFields(地址和电话)......那么我应该把那些有很多和属于< / STRONG>? 感谢
答案 0 :(得分:1)
你已经用简单的英语说了:-)
我想要一个联系人,无论是公司还是个人,都有很多ContactFields(地址和电话)......那么我应该把它放在哪里有很多属于?感谢
class Contact < ActiveRecord::Base has_many :contact_fields end class ContactField < ActiveRecord::Base belongs_to :contact end
此关系将由地址和电话继承
答案 1 :(得分:1)
看起来你在描述属于某种关系。关联应该在父类中定义,因此它们可以由子类继承。
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记录。如果需要任何子类中定义的方法,则始终可以使用become方法。有几种方法可以解决这个问题。这样就增加了额外的关联,就像我一样。或使用ActiveRecord::Base#becomes