在Active Record中为IN运算符定义值数组的正确方法是什么

时间:2010-12-06 21:16:53

标签: ruby activerecord

我需要在数据中搜索值包含在字符串数组中的行。在Active Record中执行此操作的正确方法是什么?

例如,假设我有这个数组:

["fluffy", "spot"]

我希望SQL看起来像这样:

select * FROM Pets WHERE name IN ('fluffy', 'spot')

以下作品:

list = ["fluffy", "spot"].map { |x| "'#{x}'" }.join(', ')
Pet.where("name in (#{list})")

显然这是一个坏主意。这样做的正确方法是什么?有没有办法以这种方式使用参数,或者Active Record是否有一个特殊的方法呢?

1 个答案:

答案 0 :(得分:2)

list = ["fluffy", "spot"]    
Pet.where(:name => list)