接受的答案不完整,因为它在注册时仍然区分大小写。例如,“用户名”和“用户名”都可以成功注册,但只有第一个才能登录。在config/initializers/devise.rb
禁用不区分大小写键(这也可以是模型专用的,所以检查有太多):
config.case_insensitive_keys = []
覆盖的models/user.rb
的find_first_by_auth_conditions
方法:
def self.find_first_by_auth_conditions(warden_conditions)
conditions = warden_conditions.dup
if login = conditions.delete(:username)
where(conditions).where(["lower(username) = :value", { :value => login.downcase }]).first
else
where(conditions).first
end
end
...和在中也设置validates_uniqueness_of
:
validates_uniqueness_of :username, :case_sensitive => false
所以你有它:在数据库中不区分大小写的身份验证,不区分大小写的注册,保留大小写。
第四个火枪手当然是d'Artagnan :) –