我的模型中有以下验证器:
validates_uniqueness_of :item_id, conditions: -> { where.not(status: "published") }
这里的条件是什么?如果存在状态,是否会阻止验证器本身查看表格行:"已发布"或者它是唯一性验证器的扩展,以排除具有以下状态的行:"已发布"在独特性(是的,有区别)?
上述验证器与以下验证器之间是否存在差异,假设status_published?
是一种检查状态为"已发布的方法"不是吗?
validates_uniqueness_of :item_id, :unless => lambda { status_published? }
最后,如果没有区别,我怎样才能完成第二种情况,其中唯一性验证器将检查值是否仅在条件为真的行中唯一?
答案 0 :(得分:1)
根据documentation,条件将约束限制为与它们匹配的记录集,因此如果那些条件不匹配,则验证根本不会运行。
另外,如果您在Rails 4中执行此操作,您可能需要查看new validates
syntax:
validates :item_id, uniqueness: true, unless: :status_published?