RansackPostgresql DB를 사용하여 검색하고 있습니다.Arel 및 Ransack이있는 여러 열의 ILIKE
두 개의 다른 열에서 "ILIKE"(텍스트 열)를 사용하여 검색해야하는 입력이 있습니다. 잘 작동
ransacker :number do
Arel.sql("invoice_number::text")
end
:
Purchase.ransack({number_cont: "123"}).result.to_sql
# => "SELECT \"purchases\".* FROM \"purchases\" WHERE (invoice_number::text ILIKE '%123%')"
는 그러나, 나는 동일한 입력 (그래서, 같은 ransacker)를 사용하여 다른 컬럼에서 검색 지금 원하는
는 우선이 ransacker를 만들었습니다.나는이 일을 시도 : 리턴
ransacker :number do |parent|
Arel::Nodes::InfixOperation.new('OR', parent.table["invoice_number::text"], parent.table["shipping_number::text"])
end
:
Purchase.ransack({number_cont: "123"}).result.to_sql
# => "SELECT \"purchases\".* FROM \"purchases\" WHERE (\"purchases\".\"invoice_number::text\" OR \"purchases\".\"shipping_number::text\" ILIKE '%123%')"
그래서 당신이 볼 수있는 내가 필요로하는 것과 너무 다르지 않다,이다 :
을 "column1 :: text ILIKE '% 123 %'또는 column2 :: text ILIKE '% 123 %'"
어떻게 할 수 있습니까?