【发布时间】:2010-05-05 10:12:36
【问题描述】:
我有一个项目模型,它接受任务的嵌套属性。
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
Task 模型中的唯一性验证在更新 Project 时会出现问题。
在项目编辑中,我删除了一个任务 T1,然后添加了一个同名的新任务 T1,唯一性验证限制了项目的保存。
参数哈希看起来像
task_attributes => { {"id" =>
"1","name" => "T1", "_destroy" =>
"1"},{"name" => "T1"}}
在销毁旧任务之前对任务进行验证。因此验证失败。知道如何验证它不认为任务被破坏吗?
【问题讨论】:
-
只是好奇为什么不更新旧任务而不是删除旧任务并创建具有相同名称的新任务。
-
你的意思是我需要遍历旧任务并检查是否有任何与新任务同名但标记为已销毁的旧任务,然后只更新旧任务?
-
Arun ... 这只是一个测试用例(添加与您要删除的另一个任务同名的任务)还是您在每次编辑时都这样做,即删除任务并重新创建它们。
-
trustfundbaby - 实际上我没有想到那个测试用例。我错误地删除了一个任务。所以我不得不添加一个与已删除任务同名的新任务。我最终遇到了上述情况。
-
我很困惑,如果你已经删除了任务,为什么你去提交编辑时要传递删除任务的参数?你是通过js删除任务,然后发送参数进行实际删除吗?
标签: ruby-on-rails nested-forms validates-uniqueness-of