我对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 => Proc
(proc1 && proc2 => proc2
)。因此,由于&&
运算符的工作方式(这在类加载时发生),您的第一个过程将被忽略,并且永远不会调用,甚至一次也不会调用。
关于ruby-on-rails - 使用多个Proc对象的验证问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40021298/