ruby-on-rails - Rails 嵌套属性创建,但不更新,不删除

标签 ruby-on-rails ruby-on-rails-4

我有以下型号:

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}])

ps。使用 Rails 4.2.4 进行测试

最佳答案

我也遇到过这个问题。原因是 Rails 不知道你的记录已经存在。 您只需在参数中添加 :ID 即可。

关于ruby-on-rails - Rails 嵌套属性创建,但不更新,不删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39412602/

相关文章:

ruby-on-rails - Capistrano-Puma 未启动 Puma 服务器

ruby-on-rails - Rails has_many :through with :primary_key

ruby-on-rails - 找不到 'id' =clas 的时间表

ruby-on-rails - Rails 枚举符号与字符串

ruby-on-rails - 设计确认 : No routes matches

ruby-on-rails - Rails 路由多个可选参数

ruby-on-rails - Rails 3 - 使用 PDFKit 创建 PDF 文档时 wkhtmltopdf 命令失败

ruby - 导轨 4 : Append to a "has_many" relation without saving to DB

ruby-on-rails - 使用嵌套表单时无法批量分配 protected 属性设计错误

ruby-on-rails - Rails 4 - 将数据库列从一个应用程序移动到另一个应用程序