どうすればこのようなことができますか?
myarray = ["name1","name2"]
Product.where('name ILIKE ?', %#{myarray}%)
名前が と のようなすべての製品を取得する必要がname1
ありname2
ます。
これは可能ですか?
どうすればこのようなことができますか?
myarray = ["name1","name2"]
Product.where('name ILIKE ?', %#{myarray}%)
名前が と のようなすべての製品を取得する必要がname1
ありname2
ます。
これは可能ですか?
最近同じ問題が発生しましたが、どちらの回答も役に立たなかったので (私は MySQL データベースを使用しています)、解決策を共有したいと思いました。
小さなデータベースがあり、すべての製品を取得してもかまわない場合は、データベースからすべての製品を取得した後に、次のようにフィルタリングを実行できます。
Product.select { |product| myarray.any? { |str| product.name.include? str } }
WHERE REGEXP
ただし、データベース レベルでクエリを実行する場合は、最初に配列をパイプ区切りのリストに変換して句を使用できます。
Product.where("`name` REGEXP '#{Regexp.new(myarray.join('|'))}'")