我有一组记录ID ["303", "430", "4321", "5102"]
。我想使用SQL获取与这些ID匹配的所有记录:
acceptable_ids = ["303", "430", "4321", "5102"]
@users = User.where("is_awesome = true AND id IN acceptable_ids)
给出了这个错误:
ActiveRecord::StatementInvalid (PG::SyntaxError: ERROR: syntax error at or near "["
编写查询以获取所有匹配acceptable_ids
的ID的用户的正确方法是什么?
注意:的
我知道User.find(acceptable_ids)
,但由于我使用select,where和join子句构建SQL查询,所以无法使用它。
答案 0 :(得分:8)
User.where(is_awesome: true, id: acceptable_ids)
答案 1 :(得分:-3)
你可以这样做。
@users = User.where("is_awesome = true AND id IN (#{acceptable_ids.join(', ')})")
我确定我已经看到了一种更简单的方式,但目前无法回想起......但上面应该有效。
编辑
但是,你可以从喧嚣的评论中看出这不是一个流行的答案,所以你应该看看链接和列出的一些替代方案,例如。
# Will raise exception if any value not found
User.find( [1,3,5] )
# Will not raise an exception
User.find_all_by_id( [1,3,5] )