【发布时间】:2015-07-30 14:22:00
【问题描述】:
我遇到了 Rails 验证问题,我将在此处尝试解释。
想象一下我有这样的场景:
Parent 有很多 ParentChild, Child有很多ParentChild, ParentChild 属于 Parent 和 Child, 此外,父母可以是活跃的或不活跃的。
我需要在活跃的父母身上验证孩子的存在。为此,我编写了以下代码:
validates :child, presence: { message: "can't be blank on active parents" }, if: -> (parent) { parent.active? }
而且它确实有效。
假设我有这个 Parent 与它关联的 4 个孩子,我从中删除了这 4 个关联的孩子。然后验证启动并将错误消息添加到父模型,但不会阻止删除关联的子模型。
基本上,相关的子级将被删除并进行验证。
我还尝试使用自定义验证甚至是 before_validation 回调来手动检查子项的删除,但似乎没有任何效果。
如有任何帮助,我们将不胜感激。
【问题讨论】:
标签: ruby-on-rails ruby ruby-on-rails-4 rails-activerecord