我有一个表具有布尔字段的用户"活动"。 我需要对用户名进行唯一性验证,但仅限于活跃用户。
我试过
validates :name, :uniqueness => true, :if => "active == true"
但它仍然会抛出错误,因为非活动用户具有相同的名称。
有什么想法吗?
由于
答案 0 :(得分:3)
validates :name, :uniqueness => { :scope => :active }, :if => :active
应该这样做
更多信息:
它的作用是检查名称的唯一性,但仅限于active
列具有相同值的其他用户。这几乎可以满足您的需求,但由于您不关心两个非活动用户是否具有相同的名称,我们只会在用户的active
方法返回“truthy”值时运行验证(即{{1因为这只是一个布尔属性的访问器)。最终结果是我们仅验证活动用户的名称唯一性,但仅限其他活跃用户。