【发布时间】:2014-02-03 17:38:18
【问题描述】:
所以我有一个典型的 Rails 模型,带有 accepts_nested_attributes_for 和存在验证
(sn-ps)
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)并保存它时,它删除了封面但关于存在的验证已经通过。
我认为发生的事情是:
- 标记销毁封面
- 验证过程发生(认为仍有覆盖(但可能无法识别销毁))
- 有效,正在保存
- 保存书籍和
- 通过
没有关于无封面的再次验证
我做错了吗?还有其他方法可以实现吗?或者我如何重新验证这种情况(例如,在发生保存和销毁之后,会有另一个验证表明生成的对象现在无效)?
【问题讨论】:
标签: ruby-on-rails validation ruby-on-rails-4 nested-forms