Geo*_*e C 4 ruby-on-rails devise ruby-on-rails-3
使用名称作为键,我们如何在注册时通过忽略大小写来验证名称,同时在显示时仍然记住案例?
在config/initializers/devise.rb,config.case_insensitive_keys = [ :name ]注册之前,设置似乎小写整个名称.
例如:一些家伙自称为TheFourthMusketeer.
您可能尝试的是不设置:name为不区分大小写,这将在数据库中正确保存区分大小写的名称:
config.case_insensitive_keys = []
Run Code Online (Sandbox Code Playgroud)
然后,覆盖find_first_by_auth_conditionsUser上的类方法,以按名称查找用户.请注意,此代码会因数据库而异(以下是使用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
Run Code Online (Sandbox Code Playgroud)
这样做,User.find_for_authentication(login: 'thefourthmusketeer')将使用name"TheFourthMusketeer" 正确地返回记录.
有关覆盖此方法的说明,请参阅https://github.com/plataformatec/devise/wiki/How-To:-Allow-users-to-sign-in-using-their-username-or-email-address.
| 归档时间: |
|
| 查看次数: |
805 次 |
| 最近记录: |