ID の配列 (クライアント側から受信) があるとします。
myArray = [1,5,19,27]
そして、(セカンダリ)IDがそのリストにあるすべてのアイテムを返したいと思います。
SQL では、次のようになります。
SELECT *
FROM Items
WHERE id IN (1,5,19,27)
私はできることを知っています:
Item.where(id: [1,5,9,27])
、
ただし、これが追加されるより長い where クエリは、準備されたステートメント構文を使用しますItem.where('myAttrib = ? AND myOtherAttrib <> ? AND myThirdAttrib = ?', myVal[0], myVa[1], myVal[2])
それを念頭に置いて、私が望むことは次のとおりです。
Item.where('id IN ?', myArray)
ただし、構文エラーが発生します。
ActiveRecord::StatementInvalid: PG::Error: ERROR: syntax error at or near "1"
LINE 1: SELECT "items".* FROM "items" WHERE (id in 1,2,3,4)
どうすればこれを回避できますか? 式の準備済みステートメント構文で where を使用する正しい方法は何ですかIN
。