简体   繁体   English

Rails 3 自定义验证 Email 唯一性

[英]Rails 3 Custom Validation for Email Uniqueness

I am using Riak database for my current project which does not support the "uniqueness" helper method.我正在为我当前的项目使用 Riak 数据库,它不支持“唯一性”辅助方法。 Now I want to validate user email for uniqueness.现在我想验证用户 email 的唯一性。 How to write the custom validation for unique emial address??如何为唯一的电子邮件地址编写自定义验证?

Try something like this.尝试这样的事情。 You may have to modify the User.exists?您可能需要修改User.exists? part if that doesn't work with your DB.如果这不适用于您的数据库。

class User
  validate :verify_unique_email

  def verify_unique_email
    if User.exists? email: email
      errors.add :email, 'has already been taken'
    end
  end
end

You could put something like this in your validator:你可以在你的验证器中放置这样的东西:

Class User
  validate :unique_email_address?

  def unique_email_address?
    return false if User.where(email: self.email).any?
  end

end

Let me know if you need help with the custom validator file.如果您需要有关自定义验证器文件的帮助,请告诉我。

This worked for me in Rails 7.这在 Rails 7 中对我有用。

class User
  validate :verify_unique_email

  def verify_unique_email
    if !User.find_by(email: email).nil?
      errors.add :email, 'has already been taken'
      throw :abort
    end
  end
end

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM