accepts_nested_attributes_for不允许更新存在唯一性验证的多个子记录

时间:2014-06-17 11:24:30

标签: ruby-on-rails-3 validation activerecord

我有以下结构:

模型/ user.rb

class User < ActiveRecord::Base
  attr_accessible :name
  has_many :devices
  accepts_nested_attributes_for :devices, allow_destroy: true
end

模型/ device.rb

class Device < ActiveRecord::Base
  attr_accessible :instance, :model_number, :user_id
  belongs_to :user
  validates :instance, uniqueness: {scope: :user_id}
end

用户表单包含设备的嵌套字段。

假设存在以下记录:

User (1)
Device (1), instance: 1, user_id: 1
Device (2), instance: 2, user_id: 1

我想转到用户编辑表单,并在两台设备上交换实例编号。问题是,在现有设置的情况下,第一个设备会经历更新过程,当它达到验证时,它会失败,因为已经有一个实例编号为I的设备试图分配它,因为更新顺序发生。

我可以做些什么来阻止这些验证不知道我试图同时更新多个记录,最终会通过验证?

0 个答案:

没有答案