0

我正在使用 rails 进行身份验证,并且想要验证用户名的唯一性,除非另一个用户名被设置为临时帐户。

示例:我们设置了一个用户帐户,其名称为:“buddy”,电子邮件为:“placeholder@email.com”

用户来并创建一个帐户。如果唯一的其他好友帐户与电子邮件相关联,我们希望用户能够使用名称“buddy”:“placehoder@gmail.com”。

基本上我想做一些事情:

validates_uniqueness_of :name, unless: User.where(name: :name).first.email.include?("placeholder@email.com")

这样做的正确方法是什么?

4

2 回答 2

1

您可以将 Proc 传递给除非:选项,就像这样......

validates_uniqueness_of :name, unless: Proc.new { |user| User.where(name: user.name).first && User.where(name: user.name.first.email.include?(user.email) }
于 2014-08-13T20:45:24.490 回答
0
validates_uniqueness_of :name, conditions: -> {where.not(email: "placeholder@email.com")}

这将生成一个查询,如

SELECT 1 AS one FROM "users"
  WHERE ("users"."name" = 'buddy') AND
        ("users"."email" != 'placeholder@email.com')
  LIMIT 1
于 2014-08-13T20:39:06.350 回答