My Rails应用使用Ransack gem在多个属性上搜索我的模型。有没有办法让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 :(得分:2)
Posgres使用ILIKE进行不区分大小写的查询。
来自github上的spovich:
LIKE vs ILIKE来自ARel,而不是搜身。但是,事实并非如此 看起来像你的问题。
您使用:code_eq将生成完全匹配的SQL(例如'where code =“foo”)因此不能不区分大小写。任何'喜欢' 谓词(_cont,_start,_end)默认生成ILIKE(for PostgreSQL的)。因此,如果您使用:code_cont将生成ILIKE 声明(例如'where code ILIKE“%foo%”')。查看所有常量 谓词。
https://github.com/ernie/ransack/blob/master/lib/ransack/constants.rb
https://github.com/ernie/ransack/issues/57#issuecomment-3472618
答案 1 :(得分:0)
考虑使用matches_any谓词。我在github repo中没有看到任何关于它的文档或规范,但是这个问题讨论了它,https://github.com/ernie/ransack/issues/11