2016-04-12 6 views
1

ユニークなインデックスを持つusernameという名前のデータベーステーブルカラムがあります。私はユーザー名がデータベースに送られる前に小文字にされていることに気付きました。 ActiveRecordはこれをやっていますか?私はそれをオフにすることはできますか?別の名前の列に対して有効にすることはできますか?ActiveRecordは自動的に "username"という名前の列を小文字にしますか?

+0

アクティブレコードは、デフォルトでは文字列をダッシュ​​ダウンしません。おそらく、これにはモデル内にいくつかのロジックがあります。モデルコードを投稿できますか? – sixty4bit

+2

ac @ sixty4bitによると、activerecordはありませんが、Deviseなどの認証宝石は実際にこれを行います – trh

+0

@trh Aha! AppはDeviseを使用します。そうでなければなりません。ありがとう! –

答えて

0

問題はあなたの工夫初期化子内のcase_insensitive_keysリストの外側のユーザ名フィールドの滞在を確認する必要があり、このラインで

https://github.com/plataformatec/devise/blob/29142418bade74224d98bbf5bbcadfba181d5db9/lib/devise/models/authenticatable.rb#L198

です。それは「きれいな」方法です。

汚れた方法は、メソッドを「オーバーライド」して、データベースで実際に大文字と小文字を区別するキーを指定することです。

迂回または上書きすることはお勧めしません。これらの属性をリストする論理または理由がありますが、実際にアプリケーションが必要な場合は先に進みます。

関連する問題