微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

ruby-on-rails – 在Devise中保留大写字母不区分大小写的名称

使用名称作为键,我们如何在注册时通过忽略大小写来验证名称,同时在显示时仍然记住案例?

在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 举报,一经查实,本站将立刻删除。

相关推荐