我有以下两个模型

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(地址和电话)......那么,我应该把那些有许多属于? 感谢

有帮助吗?

解决方案

您已经表示,它用简单的英语:-)

  

我想一个接触,无论是公司或个人,有许多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