gpt4 book ai didi

ruby-on-rails - Rails accepts_nested_attributes_for with _destroy 可以跳过存在验证

转载 作者:行者123 更新时间:2023-12-05 05:27:14 27 4
gpt4 key购买 nike

所以我有一个典型的 Rails 模型,带有 accepts_nested_attributes_for 和存在验证

(片段)

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)并保存它时,它删除了封面,但关于存在的验证已经通过。

我认为发生的事情是:

  1. 标记销毁封面
  2. 验证过程发生(认为仍然存在掩护(但可能无法识别销毁))
  3. 有效并开始储蓄
  4. 保存书籍并
  5. 通过

没有再次验证关于没有覆盖

我做错了吗?还有另一种方法可以实现吗?或者我如何重新验证这种情况(例如,在发生保存和销毁之后,会有另一个验证表明生成的对象现在无效)?

最佳答案

我找到了我的问题的解决方案,我是对的,保存没有考虑那些标记为 _destroy 的内容。

此链接更好地描述了问题并且也有答案。 http://homeonrails.com/2012/10/validating-nested-associations-in-rails/

基本上,他拒绝了那些被标记为销毁的,并清点了剩余的。

关于ruby-on-rails - Rails accepts_nested_attributes_for with _destroy 可以跳过存在验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21134253/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com