我想做
Model.where('id = ?', [array of values])
如何在不将OR语句链接在一起的情况下完成此查找?
答案 0 :(得分:112)
从here开始,它似乎是使用SQL in
语句完成的:
Model.where('id IN (?)', [array of values])
或者更简单地说,就像kdeisz指出的那样(使用Arel来创建SQL查询):
Model.where(id: [array of values])
答案 1 :(得分:16)
来自ActiveRecord Query Interface guide
如果要使用IN表达式查找记录,可以将数组传递给条件哈希:
Client.where(orders_count: [1,3,5])
答案 2 :(得分:6)
为了便于阅读,可以进一步简化:
Model.find_by(id: [array of values])
这相当于使用where
,但更明确:
Model.where(id: [array of values])
答案 3 :(得分:2)
您可以使用“ in”运算符:
Model.in(id: [array of values])
答案 4 :(得分:0)
如果您要查找蒙古语中的查询,那就是Model.where(:field.in => ["value1", "value2"] ).all.to_a
答案 5 :(得分:0)
其中和 find_by 之间的差异很小。
find_by 将仅返回一条记录(如果找到),否则为零。
查找符合指定条件的第一条记录。没有隐含的订购,因此,如果订购很重要,则应自己指定。 如果未找到任何记录,则返回nil。
def find_by(*args)
where(*args).take
rescue RangeError
nil
end
同时位置将返回关系
返回一个新的关系,这是过滤当前关系的结果 根据参数中的条件。
因此,根据您的情况,适当的代码是:
Model.where(id: [array of values])