0

Rails では、ユーザー名に大文字を使用できるようにし (GreatestOneEver のように)、検索時 (User.find_by_username "greatestoneever" のように) や他のタスクを実行するときに大文字と小文字を区別しないようにするにはどうすればよいでしょうか? 基本的には、ユーザー名が大文字で表示されていることをユーザーに見てもらいたいのですが、裏ではすべてのコードで小文字のバージョンを使用しています。

私には 1 つのアイデアがあります。それは、display_name などと呼ばれる新しいフィールドをモデルに追加することです。より良い方法はありますか?

編集:正規表現などによる検索は非効率的であるため、使用したくありません。ユーザー名でインデックスを作成する必要があります。ただし、大文字と小文字を区別しない検索も行います。多分 display_name が最良のアイデアですか?

4

2 に答える 2

1

ここに1つの可能性があります

name = "GreatestOneEver"
User.find(:first, :conditions => [ "lower(name) = ?", name.downcase ])

ただし、大文字と小文字を区別せずに検索すると、複数の結果が返される可能性があると思います。したがって、:first を削除できます。

于 2013-03-15T07:59:45.237 に答える
0

humanize文字列にアンダースコア(_)が含まれている場合は機能する可能性があります。または、検索プロセスの場合は、次の正規表現を試してください。

{username: /#{Regexp.escape(search)}/i}

検索はあなたの価値です。

于 2013-03-15T07:56:35.507 に答える