根据Rails中的其他字段验证唯一性

时间:2013-12-04 20:19:09

标签: ruby-on-rails

我有一个表具有布尔字段的用户"活动"。 我需要对用户名进行唯一性验证,但仅限于活跃用户。

我试过

 validates :name, :uniqueness => true, :if => "active == true"

但它仍然会抛出错误,因为非活动用户具有相同的名称。

有什么想法吗?

由于

1 个答案:

答案 0 :(得分:3)

validates :name, :uniqueness => { :scope => :active }, :if => :active

应该这样做

更多信息:

它的作用是检查名称的唯一性,但仅限于active列具有相同值的其他用户。这几乎可以满足您的需求,但由于您不关心两个非活动用户是否具有相同的名称,我们只会在用户的active方法返回“truthy”值时运行验证(即{{1因为这只是一个布尔属性的访问器)。最终结果是我们仅验证活动用户的名称唯一性,但仅限其他活跃用户。