2012-01-12 13 views
1

My RailsアプリケーションはRansack gemを使用して複数の属性でモデルを検索します。 RansackにPostgresに大文字小文字を区別しないクエリをさせる方法はありますか?Rails 3 - 大文字と小文字を区別しないRansack&Postgresクエリ

= search_form_for @q do |f| 
    = f.label :name_cont 
    = f.text_field :name_cont 

    = f.label :code 
    = f.text_field :code_eq 

= f.submit 
+0

あなたがこの問題のために周りのすべての仕事を持っていますか? – manoj2411

+0

いいえ、私は何ヶ月もそれを調べていません。 – nslocum

答えて

2

Posgresは大文字小文字を区別しないクエリにILIKEを使用しています。 githubの上spovichから

:ILIKE対

LIKEはARELから来て、掻き回すありません。しかし、それは あなたの問題のように見えません。

code_eqを使用すると完全一致のSQLが生成されます(例: ' code = "foo"の場合)。したがって、大文字と小文字を区別することはできません。 'like' 述部(_cont、_start、_end)のいずれも、デフォルトでILIKEを生成します( postgresqlの場合)。したがって、ILIKE 文を生成するcode_contを使用すると(たとえば、 'code ILIKE "%foo%"'のように)。すべての の定数を参照してください。

https://github.com/ernie/ransack/blob/master/lib/ransack/constants.rb

https://github.com/ernie/ransack/issues/57#issuecomment-3472618

0

matches_any述語の使用を検討してください。私はgithubリポジトリでその文書や仕様を見ていませんでしたが、この問題で説明しています。https://github.com/ernie/ransack/issues/11

+0

* matches_any *は値の配列を渡すために使用されます。配列要素はクエリでOR結合されているため、配列要素のいずれかと一致するレコードが返されます。 – nslocum

関連する問題