在使用哈希或数组时,ActiveRecord是否支持在WHERE子句中使用OR条件?例如,如果我想检索名为Gary,John或Carlos的任何人的年龄,我该如何编写查询?
这是代码:
params[:names] = ["Gary", "John", "Carlos"]
@ages = People.select("age").where('name = ?', params[:names])
因为params [:names]可以包含任意数量的项,所以我宁愿避免使用固定数量的OR条件对查询进行硬编码。
我看过squeel gem,但这是最好的解决方案吗?
您可以使用Rails的内置SQLIN
子句支持而不是链接OR
子句。以下应该工作:
@ages = People.select("age").where(name: params[:names])
这将生成一个查询,例如:
SELECT age FROM people WHERE name IN ("Gary", "John", "Carlos")
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句