一般的に、私は自分のデータベースで大文字と小文字を区別するのが好きですが、それが面倒だと感じることが数回あります。user_name と email は、特に検索時に大文字と小文字を区別したくないフィールドの良い例です。
次のようなものを使用して、保存する前に文字列を簡単にダウンケースできます。
before_save do self.email.downcase! 終わり
このようにして、user_name とメールは常に小文字で保存されます。しかし、find_by_user_name と find_by_email の最良の方法は何ですか? もちろん、これらのメソッドに渡す文字列を常に小文字にすることを忘れないでください。しかし、それはあまり DRY ではないようです。
私は find_by_email をオーバーライドし、電子メールを小文字化したら super でオリジナルを呼び出すことを考えましたが、それを理解する運がありませんでした。
それで、これを行う最善の方法は何ですか?
PS私は、このような関連記事(Rails 3の大文字と小文字を区別しないfind_by_emailを書くにはどうすればよいか)が同じ問題を解決しようとしているとは思わない。ここで「lower」を使用したカスタムSQLは、これらの値がすべて低いことをすでに確認しているため、私にとっては無意味です。これは、現在入力されているものであり(おそらくユーザーが入力したフォームから)、小文字にする必要があります。