Как я могу написать регистронезависимый find_by_email для Rails 3 - PullRequest
4 голосов
/ 01 ноября 2011

Я обнаружил, что если пользователь регистрируется по электронной почте и использует заглавную букву в своей электронной почте, когда я делаю следующее, я получаю ноль.

Пример:

username = Dillan@example.com

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


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

user.nil?  

=> true

Как я могу найти письмо без проблем с учетом регистра или как написать find_by_email без учета регистра?

1 Ответ

16 голосов
/ 01 ноября 2011

Если у пользователя (скажем, X) есть электронное письмо «Dillan@example.com», то

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

должен вернуть пользователя X. Я не копировал ситуацию, но я полагаю, что это, по сути, вы, по-вашему,нужно сделать.

Или, что еще лучше, использовать вместо вместо поиска, как указано @MrTheWalrus

User.where('lower(email) = ?', "dillan@example.com").first
...