假设我有一个 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
。