使用名称作为键,我们如何在注册时通过忽略大小写来验证名称,同时在显示时仍然记住案例?
在config / initializers / devise.rb中,设置config.case_insensitive_keys = [:name]似乎在注册之前将整个名称小写.
例如:一些家伙自称为TheFourthMusketeer.
>观点将显示TheFourthMusketeer,而不是第四个观察者
>没有新用户可以在tHEfourthMUSKETEER下注册
解决方法
您可能尝试的是不设置:name作为不区分大小写,这将在数据库中正确保存区分大小写的名称:
config.case_insensitive_keys = []
然后,覆盖User上的find_first_by_auth_conditions类方法,以按名称查找用户.请注意,此代码会因数据库而异(以下是使用Postgres):
def self.find_first_by_auth_conditions(warden_conditions) conditions = warden_conditions.dup if login = conditions.delete(:login) where(conditions).where("lower(name) = ?",login.downcase).first else where(conditions).first end end
这样做,User.find_for_authentication(登录:’thefourthmusketeer’)将正确返回名为“TheFourthMusketeer”的记录.
有关覆盖此方法的说明,请参见https://github.com/plataformatec/devise/wiki/How-To:-Allow-users-to-sign-in-using-their-username-or-email-address.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。