我有以下结构:
模型/ 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的设备试图分配它,因为更新顺序发生。
我可以做些什么来阻止这些验证不知道我试图同时更新多个记录,最终会通过验证?