如何为Rails 3编写不区分大小写的find_by_email

时间:2011-11-01 07:12:44

标签: ruby-on-rails-3 case-insensitive

我发现如果用户使用电子邮件注册并在我执行以下操作时在其电子邮件中使用大写字母,那么我将无效。

示例:

username = Dillan@example.com

params[:user][:email] = dillan@example.com


user = User.find_by_email(params[:user][:email])

user.nil?  

=>真

如何在没有区分大小写问题的情况下搜索电子邮件,或者如何编写不区分大小写的find_by_email?

1 个答案:

答案 0 :(得分:16)

如果用户(比如说X)有一封电子邮件'Dillan@example.com',那么

User.find(:all, :conditions => ["lower(email) =?", "dillan@example.com"]) 

应该返回用户X.我没有复制情况,但这是我猜你基本上需要做的。

或者,更好的是,使用@MrTheWalrus

指出的地方而不是找到
User.where('lower(email) = ?', "dillan@example.com").first