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

che*_*ell 4 case-insensitive ruby-on-rails-3

我发现,如果用户在电子邮件中注册并在我的电子邮件中使用大写字母,那么我会得到零.

例:

username = Dillan@example.com

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


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

user.nil?  
Run Code Online (Sandbox Code Playgroud)

=>是的

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

pra*_*vin 16

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

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

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

或者,更好的是,使用@MrTheWalrus指出的而不是找到的地方

User.where('lower(email) = ?', "dillan@example.com").first
Run Code Online (Sandbox Code Playgroud)

  • 我将使用`User.where('lower(email)=?',"dillan @ example.com").first`,但关键点(使用SQL lower()函数)是相同的. (4认同)