簡體   English   中英

rails 嵌套屬性創建,但不更新和不刪除

[英]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_id1更新到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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM