29

どうすればこのようなことができますか?

myarray = ["name1","name2"]
Product.where('name ILIKE ?', %#{myarray}%)

名前が と のようなすべての製品を取得する必要がname1ありname2ます。

これは可能ですか?

4

3 に答える 3

1

最近同じ問題が発生しましたが、どちらの回答も役に立たなかったので (私は MySQL データベースを使用しています)、解決策を共有したいと思いました。

  • 小さなデータベースがあり、すべての製品を取得してもかまわない場合はデータベースからすべての製品を取得した後に、次のようにフィルタリングを実行できます。

    Product.select { |product| myarray.any? { |str| product.name.include? str } }
    
  • WHERE REGEXPただし、データベース レベルでクエリを実行する場合は、最初に配列をパイプ区切りのリストに変換して句を使用できます。

    Product.where("`name` REGEXP '#{Regexp.new(myarray.join('|'))}'")
    
于 2018-04-25T02:22:54.127 に答える