3

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

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

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

现在这显然不像:ages数组那样工作,当根据上面的相等语句时,它需要一个字符串。

我试图让它实现以下方面的目标:WHERE age = 1 AND age = 4 AND age = 10根据ages数组。

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

4

2 回答 2

2

我认为您正在寻找一个IN查询,因为age 不能同时 1and410一些单列整数值。

Person.where(age: ages)
于 2013-01-29T21:34:40.860 回答
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 转换工作。

于 2013-01-29T21:35:01.503 回答