2012-08-24 2 views
0

레일즈 3.0.5에서 내 사용자 모델에 이상한 문제가 있습니다.레일, 사용자 계정 및 사례

사용자가 등록 할 때 사례는 모델별로 표시됩니다. "Nicolas"는 "nicolas"와 다릅니다. 사용자가 로그인 할 때 모델에서 대소 문자를 볼 수 없습니다 : "Nicolas"및 "nicolas"는 동일합니다. 내 모델에서

:

validates_uniqueness_of :username 

def self.authenticate(username, password) 
    user = find_by_username(username) 
    return user if user && user.status == 1 && user.password_hash == BCrypt::Engine.hash_secret(password, user.password_salt) 
    return nil 
end 

그래서 "find_by_usename"...

어떤 생각을 "니콜라스"또는 "니콜라스"에 대한 발견 된 첫 번째 사용자를 반환합니다?

답변

0

기본적으로 MySQL에서는 대소 문자를 구분하지 않습니다. 당신은 대소 문자를 구분 검색을 수행하려는 경우

그래서,이 같은 시도 :

Model.where('my_string LIKE BINARY ?', "This is a Test String") 

귀하의 경우를,이는 다음과 같습니다

user = User.where('username LIKE BINARY ?', username).first 
+0

이 완벽하게 작동하는 것 같다. 방금 요청 끝에 ". first"를 추가합니다. –

+0

실제로, 나는 나의 대답을 편집 할 것이다. – Intrepidd