所以我有一个典型的带有accepts_nested_attributes_for
的Rails模型和存在验证
(片段)
class Book < ActiveRecord::Base
...
has_one :cover
accepts_nested_attributes_for :cover, allow_destroy: true
validate :require_cover
def require_cover
errors.add('', 'You must have a cover for the book.') if self.cover.blank?
end
...
end
这在我创建的第一步就可以正常运行。但是当我尝试编辑它并单击封面上的删除(单击删除添加_destroy
true)并保存它时,它删除了封面但是已经过了关于存在的验证。
我认为发生的事情是:
没有关于无掩护的再次验证
我做错了吗?还有其他方法可以实现吗?或者我如何重新验证这个场景(比如,在发生了保存和销毁之后,还会有另一个验证说生成的对象现在无效)?
答案 0 :(得分:0)
我找到了解决问题的方法,我认为保存没有考虑那些标记为_destroy的内容。
此链接更好地描述了问题并且也得到了答案。 http://homeonrails.com/2012/10/validating-nested-associations-in-rails/
基本上他拒绝了那些被标记为毁灭的东西,并计算剩下的那些。