我有以下型号:
class Company < ActiveRecord::Base
has_and_belongs_to_many :people
has_many :companies_people
accepts_nested_attributes_for :companies_people, allow_destroy: true, reject_if: :all_blank
end
class CompaniesPerson < ActiveRecord::Base
belongs_to :company
belongs_to :person
belongs_to :company_role
end
class Person < ActiveRecord::Base
end
class CompanyRole < ActiveRecord::Base
end
我正在尝试与 Company
对象一起更新其 companies_people
关联对象。我面临的问题是我可以创建新的 companies_people
对象,但无法更新或删除现有对象。最令人兴奋的是,这不是另一个关于不允许或缺少 :id
和 :_destroy
参数的问题 - 我已经设置了这些参数,但仍然可以'既不更新也不删除现有关联。
例如。此调用的目的是将 company_role_id
从 1
更新为 2
被完全忽略:
Company.first.update_attributes(companies_people_attributes: [{id: 1, person_id: 1, company_role_id: 2}])
ps。使用 Rails 4.2.4 进行测试
最佳答案
我也遇到过这个问题。原因是 Rails 不知道你的记录已经存在。
您只需在参数中添加 :ID
即可。
关于ruby-on-rails - Rails 嵌套属性创建,但不更新,不删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39412602/