[英]rails nested attributes creating, but not updating and not deleting
我有以下型號:
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}])
附: 使用 Rails 4.2.4 測試
似乎是由於此關聯聲明而發生的:
has_and_belongs_to_many :people
我最初將此關系定義為 HABTM,但后來經常發生,我需要訪問連接表並創建相應的模型 CompaniesPerson,但沒有更新:people
關聯以通過has_many through
工作。 現在我發現將上述語句更改為
has_many :people, through: :companies_people
或者只是完全注釋掉它可以解決嵌套屬性不更新和不刪除的問題。 哇,真是出乎意料。
我遇到過這個問題。 原因是 rails 不知道您的記錄已經存在。 您只需要在參數中添加:ID
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.