我对Proc进行了验证,但有问题

validates :subcategory, presence: true,
if: Proc.new {|product| product.detail.blank?} && Proc.new { |product|  product.category.id != 16 }

我的问题是,当我在第二个过程中有true时,我的验证就会触发。
为什么会这样?它不应该因为false而返回false && true=>false吗?

最佳答案

其他人已经评论了更好的方法来实现你想要的。我只想指出你的误解。
它应该返回false,因为false && true => false
不。实际上,它是Proc && Proc => Procproc1 && proc2 => proc2)。因此,由于&&运算符的工作方式(这在类加载时发生),您的第一个过程将被忽略,并且永远不会调用,甚至一次也不会调用。

关于ruby-on-rails - 使用多个Proc对象的验证问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40021298/

10-15 07:27