Разработать: разрешить пользователям регистрироваться как «UsErNaMe», но входить с «username»
Точно так же, как работает большинство веб-сайтов, я должен был хранить "UsErNaMe" в базе данных, но разрешить пользователям входить в систему с «именем пользователя».
Это довольно очевидная и необходимая функция, и многие люди, кажется, спрашивали об этом, но решение, на которое я все время натыкаюсь, похоже, не связано с собственной документацией Devise.
Например, рассмотрим этот блог:http://anti-pattern.com/2011/5/16/case-insensitive-keys-with-devise
[...]you’ve probably run into the problem that some users like to type certain letters in their logins (email and/or username) in uppercase, but expect it to be case-insensitive when they try to sign in. A not unreasonable request[...]
Здорово! Это то, что я хочу.
Его решение:
<code># config/initializers/devise.rb Devise.setup do |config| config.case_insensitive_keys = [:email, :username] end </code>
Это решение, которое я продолжаю находить. Но вот документация для этого параметра конфигурации:
<code># Configure which authentication keys should be case-insensitive. # These keys will be downcased upon creating or modifying a user and when used # to authenticate or find a user. Default is :email. config.case_insensitive_keys = [ :username, :email ] </code>
В частности: & quot; эти ключи будут уменьшены при создании / изменении пользователя. & Quot; Другими словами, имя пользователя сокращается в базе данных.
Проверять:
<code>User.create username: "UsErNaMe", password: "secret", email: "[email protected]" #=> <User username="username"...> </code>
Я что-то упускаю до боли?