在使用哈希或数组时,ActiveRecord是否支持在WHERE子句中使用OR条件?例如,如果我想检索名为Gary,John或者Carlos的任何人的年龄,我该如何编写查询?
以下是代码:
params[:names] = ["Gary", "John", "Carlos"]
@ages = People.select("age").where('name = ?', params[:names])
因为params [:names]可以包含任意数量的项目,所以我宁愿避免使用固定数量的OR条件对查询进行硬编码。
我看过那个吱吱声的宝石,但这是最好的解决方案吗?
答案 0 :(得分:3)
你可以使用Rails'内置SQL IN
子句支持而不是链接OR
子句。以下应该有效:
@ages = People.select("age").where(name: params[:names])
这会生成如下查询:
SELECT age FROM people WHERE name IN ("Gary", "John", "Carlos")