加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-17 02:44:48 所属栏目:百科 来源:网络整理
导读:使用名称作为键,我们如何在注册时通过忽略大小写来验证名称,同时在显示时仍然记住案例? 在config / initializers / devise.rb中,设置config.case_insensitive_keys = [:name]似乎在注册之前将整个名称小写. 例如:一些家伙自称为TheFourthMusketeer. 观点
使用名称作为键,我们如何在注册时通过忽略大小写来验证名称,同时在显示时仍然记住案例?

在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.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读