0

Rails 3.0.5 のユーザー モデルで奇妙な問題が発生しました。

ユーザーが登録すると、ケースはモデル別に表示されます。「ニコラス」は「ニコラス」とは異なります。ユーザーがログインすると、モデルによってケースが表示されません:「ニコラス」と「ニコラス」は同じです。

私のモデルでは:

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」は、「Nicolas」または「nicolas」で見つかった最初のユーザーを返します...

何か案が ?

4

1 に答える 1

0

デフォルトでは、MySQL では大文字と小文字が区別されません。

したがって、大文字と小文字を区別して検索したい場合は、次のようにしてみてください。

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

あなたの場合、これは次のようになります。

user = User.where('username LIKE BINARY ?', username).first
于 2012-08-24T10:18:37.863 に答える