gpt4 book ai didi

ruby-on-rails - 在设计中不区分大小写的名称,同时保留大写

转载 作者:行者123 更新时间:2023-12-04 05:59:12 27 4
gpt4 key购买 nike

使用名称作为key,我们如何在注册时忽略大小写而在显示时仍然记住大小写来验证名称?

config/initializers/devise.rb , 设置 config.case_insensitive_keys = [ :name ]似乎在注册前将整个名称小写。

示例:一些家伙将自己命名为 TheFourthMusketeer。

  • View 将显示 TheFourthMusketeer,而不是 thefourthmusketeer
  • 没有新用户可以注册,例如,thTHEfourthMUSKETEER
  • 最佳答案

    您可以尝试使用 不是 套装:name不区分大小写,这将在数据库中正确保存区分大小写的名称:

    config.case_insensitive_keys = []

    然后,覆盖 find_first_by_auth_conditions User 上的类方法通过用户名查找用户。请注意,此代码将因数据库而异(以下使用 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(login: 'thefourthmusketeer')将正确返回记录 name 《第四个火枪手》。

    https://github.com/plataformatec/devise/wiki/How-To:-Allow-users-to-sign-in-using-their-username-or-email-address有关覆盖此方法的说明。

    关于ruby-on-rails - 在设计中不区分大小写的名称,同时保留大写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14515901/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com