通过第三个表,我有两个表有多对多关系的表。在第三个表中是我在构建两个表之间的关系时需要分配的一段数据,我如何使用ActiveRecords构建方法来分配它?
以下是显示我的意思的代码:
class Company < Contact
has_many :contact_companies
has_many :people, :through => :contact_companies
accepts_nested_attributes_for :people, :allow_destroy => true
accepts_nested_attributes_for :contact_companies
end
class Person < Contact
has_many :contact_companies
has_many :companies, :through => :contact_companies
accepts_nested_attributes_for :companies, :allow_destroy => true
accepts_nested_attributes_for :contact_companies
end
class ContactCompany < ActiveRecord::Base
belongs_to :person
belongs_to :company
end
ContactCompany包含一个名为“position”的数据成员。我想做的是:
c = Person.new
c.companies.build(:name => Faker::Company.name, :position => positions.sample)
编辑:
当我尝试上面的代码时,我得到“未知属性:位置”。
答案 0 :(得分:1)
c.companies.build
行正在尝试构建一个Company
对象,该对象没有position
属性(ContactCompany
),因此出错。看起来您正在尝试在两个不同的模型上设置属性,因此您必须确保在正确的模型上设置适当的属性:
# you can chain these calls but I separated them for readability
cc = c.contact_companies.build(:position => positions.sample)
cc.build_company(:name => Faker::Company.name)