RansackPostgresql DBで検索しています。ArelとRansackを使用する複数列のILIKE
2つの異なる列で「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%' OR column2 :: text ILIKE '%123%'"
これをどのように達成できますか?