条件在唯一性验证器中的作用是什么?

时间:2014-06-05 18:02:08

标签: ruby-on-rails validation ruby-on-rails-4 model

我的模型中有以下验证器:

validates_uniqueness_of :item_id, conditions: -> { where.not(status: "published") }

这里的条件是什么?如果存在状态,是否会阻止验证器本身查看表格行:"已发布"或者它是唯一性验证器的扩展,以排除具有以下状态的行:"已发布"在独特性(是的,有区别)?

上述验证器与以下验证器之间是否存在差异,假设status_published?是一种检查状态为"已发布的方法"不是吗?

validates_uniqueness_of :item_id, :unless => lambda { status_published? }

最后,如果没有区别,我怎样才能完成第二种情况,其中唯一性验证器将检查值是否仅在条件为真的行中唯一?

1 个答案:

答案 0 :(得分:1)

根据documentation,条件将约束限制为与它们匹配的记录集,因此如果那些条件不匹配,则验证根本不会运行。

另外,如果您在Rails 4中执行此操作,您可能需要查看new validates syntax

validates :item_id, uniqueness: true, unless: :status_published?