2010-12-15 2 views
0

최근 레일스 앱을 Slicehost에서 Heroku로 옮겼습니다.Heroku : restful_authentication 로그인은 이제 대소 문자를 구분합니까? 어떻게 바꿀 수 있습니까?

앱은 restful_authentication을 사용합니다.

이제 Heroku에서 사용자 이름은 로그인 할 때 대소 문자를 구분합니다.

누군가가 "JoeSchmoe"라는 사용자 이름을 가지고 있다고 가정 해보십시오. Slicehost (MySQL 사용)에서는 "joeschmoe"또는 "Joeschmoe"로 로그인 할 수 있지만 사용자 이름을 올바른 대소 문자로 입력하지 않으면 Heroku (PostgreSQL 사용)에서 사용자 이름을 찾을 수 없다는 오류가 발생합니다.

어떻게 해결할 수 있습니까?

답변

1

Postgres 비교는 기본적으로 대소 문자를 구분하므로 생성 된 User.authenticate 방법을 업데이트해야합니다. 사용중인 restful_auth의 버전 (또는 함께 설치 한 옵션)을 정확히 알지 못하고 그것은 정확한 코드를 제공하기 어렵다,하지만 당신은 비교가 같은 것을보고 싶을 것이다 :뿐만 아니라, MySQL의에서 작동합니다

def self.authenticate(login, password) 
    return nil if login.blank? || password.blank? 
    u = find :first, :conditions => ['lower(login) = ? AND activated_at IS NOT NULL', login.downcase] # need to get the salt 
    u && u.authenticated?(password) ? u : nil 
end 

이 - lower() 적어도 5 +

에, lcase() 동의어입니다
관련 문제