2012-03-01 33 views
0

Rails 3.2アプリでは、ユーザモデル内で次のルーチンを使用する検索フィールドがあります。Railsアプリケーションで大文字と小文字を区別しない検索を実行するにはどうすればよいですか?

def self.search(search) 
    if search 
     where('fullname LIKE ? OR email LIKE ?', "%#{search}%", "%#{search}%") 
    else 
     scoped 
    end 
end 

これは大文字と小文字を区別する検索を実行しているようです。大文字と小文字が区別されないようにこれをどのように変更できますか?私は過去にこれをやった

感謝

+0

Railsはあなたのためにこれを行うことができます。 [組み込みのArelライブラリまたはSqueelのような宝石](http://stackoverflow.com/questions/2220423/case-insensitive-search-in-rails-model)を使用してください。 – Dogweather

答えて

5

のようなもの、あなたが 'iLikeの' を使用することができますのPostgresを使用している場合:

def self.search(search) 
    if search 
    where('fullname ILIKE ? OR email ILIKE ?', "%#{search}%", "%#{search}%") 
    else 
    scoped 
    end 
end 
+0

ありがとう@ブラッドリー。私はポスゲを使用しています。 LIKEは他のDBプラットフォームで大文字と小文字を区別しないと思うのは正しいですか?私はこれまでにこれまで走っていたことを思い出しません。 –

+0

LIKEは少なくともMySQLでは大文字と小文字を区別します。 –

0

は、私は、MySQLルーチンUPPERを使用しました。だから、

def self.search(search) 
    if search 
     where('UPPER(fullname) LIKE ? OR UPPER(email) LIKE ?', upcase(search), upcase(search)) 
    else 
     scoped 
    end 
end 
関連する問題