ほとんどの Web サイトが機能するのと同じように、"UsErNaMe" をデータベースに保存し、ユーザーは "username" でログインできるようにしました。
これはかなり明白で必要な機能であり、多くの人がそれを求めているようですが、私がつまずき続けている解決策は、Devise 自身のドキュメントから切り離されているようです。
たとえば、次のブログ記事を考えてみましょう: http://anti-pattern.com/2011/5/16/case-insensitive-keys-with-devise
[...] ログイン時に特定の文字 (電子メールやユーザー名) を大文字で入力するユーザーがいるにもかかわらず、サインイン時に大文字と小文字が区別されないことを期待しているという問題に遭遇したことがあるでしょう。無理のないお願い[…]
涼しい!それが私が欲しいものです。
彼の解決策:
# config/initializers/devise.rb
Devise.setup do |config|
config.case_insensitive_keys = [:email, :username]
end
それが私が見つけ続けている解決策です。ただし、その構成オプションのドキュメントは次のとおりです。
# 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 ]
特に、「これらのキーは、ユーザーの作成/変更時に小文字化されます。」つまり、ユーザー名はデータベースで小文字化されています。
検証します:
User.create username: "UsErNaMe", password: "secret", email: "email@com.com"
#=> <User username="username"...>
痛いほど明白な何かが欠けていますか?