讓我們說,我有一組ID(從客戶端接收的):使用與Rails的準備語句的語法其中
myArray = [1,5,19,27]
而且我想返回所有項目將(二次)id在該列表中。
在SQL這將是:
SELECT * FROM Items WHERE id IN (1,5,19,27)
我知道我能做到:
Item.where(id: [1,5,9,27])
,
但是不再在那裏查詢,這將是上漲到使用準備語句語法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)
我如何解決此問題?使用IN
表達式的預準備語句語法的正確方法是什麼?