我有一个Project模型,它接受Task的嵌套属性.
class Project < ActiveRecord::Base
has_many :tasks
accepts_nested_attributes_for :tasks, :allow_destroy => :true
end
class Task < ActiveRecord::Base
validates_uniqueness_of :name end
Run Code Online (Sandbox Code Playgroud)
任务模型中的唯一性验证在更新Project时会出现问题.
在编辑项目时,我删除任务T1,然后添加一个同名T1的新任务,唯一性验证限制了项目的保存.
params hash看起来像
task_attributes => { {"id" =>
"1","name" => "T1", "_destroy" =>
"1"},{"name" => "T1"}}
Run Code Online (Sandbox Code Playgroud)
在销毁旧任务之前完成对任务的验证.因此验证失败.任何想法如何验证,它不会考虑任务被销毁?
A有两个型号,"商店"和"产品",通过has_many:through链接.
在商店表单中有多个产品的嵌套属性,我在产品的唯一性验证方面遇到了一些麻烦.如果我输入产品,保存它,然后尝试为新产品输入相同的名称,则唯一性验证会成功触发.
但是,如果我在同一嵌套表单的两行中输入相同的产品名称,则表单被接受 - 唯一性验证不会触发.
我猜这是一个相当普遍的问题,但我找不到任何简单的解决方案.任何人都有最简单的方法建议,以确保在同一嵌套表格中遵守唯一性验证?
编辑:下面包含的产品型号
class Product < ActiveRecord::Base
has_many :shop_products
has_many :shops, :through => :shop_products
validates_presence_of :name
validates_uniqueness_of :name
end
Run Code Online (Sandbox Code Playgroud)