Rails 4 - Activerecord支持使用WHERE的查询中的OR条件

时间:2014-08-22 04:36:46

标签: sql activerecord ruby-on-rails-4 conditional-statements where

在使用哈希或数组时,ActiveRecord是否支持在WHERE子句中使用OR条件?例如,如果我想检索名为Gary,John或者Carlos的任何人的年龄,我该如何编写查询?

以下是代码:

 params[:names] = ["Gary", "John", "Carlos"]
 @ages = People.select("age").where('name = ?', params[:names])

因为params [:names]可以包含任意数量的项目,所以我宁愿避免使用固定数量的OR条件对查询进行硬编码。

我看过那个吱吱声的宝石,但这是最好的解决方案吗?

1 个答案:

答案 0 :(得分:3)

你可以使用Rails'内置SQL IN子句支持而不是链接OR子句。以下应该有效:

@ages = People.select("age").where(name: params[:names])

这会生成如下查询:

SELECT age FROM people WHERE name IN ("Gary", "John", "Carlos")