0

我在 Rails 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”将返回为“Nicolas”或“nicolas”找到的第一个用户......

任何的想法 ?

4

1 回答 1

0

默认情况下,在 MySQL 中,where 不区分大小写。

因此,如果您想进行区分大小写的搜索,请尝试以下操作:

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 回答