Rails ActiveRecord多个WHERE语句

时间:2013-01-29 21:31:37

标签: sql ruby-on-rails ruby rails-activerecord

我有一个包含一些条件的数组,比如说: ages = [1, 4, 10]

我正在尝试构建一个查询,它将返回数组中的年龄。该数组可以是任意长度的。如下所示:

Person.where("age == :ages", {:ages => ages})

现在这显然不起作用,因为:ages将是一个数组,当根据上面的等式语句,它期望一个字符串。

根据WHERE age = 1 AND age = 4 AND age = 10数组,我试图让它实现ages的某些内容。

在线的所有示例都讨论了如何在多个条件为单独的变量的情况下使用多个条件,在这种情况下很容易:Person.where("condition1 = :first AND condition2 = :second....)。我在数组中有未知数量的项目,我想通过它们过滤我的所有查询结果。

2 个答案:

答案 0 :(得分:2)

我认为您正在寻找IN查询,因为age 不能 1和{{1} }和4表示某个单列整数值。

10

答案 1 :(得分:2)

ActiveRecord和where语句已经支持它了:

ages = [1, 5, 12]
Person.where(age: ages)
# This will generates a query like:
# SELECT * FROM persons WHERE age IN(1, 5 ,12)

这种查询方式也比“硬编码”条件(将字符串传递给where语句)更好。通过使用Hash参数,您可以让ActiveRecord处理所有DB-Query转换工作。