在Where块中使用OR迭代遍历数组

时间:2013-07-10 10:29:01

标签: ruby ruby-on-rails-3.2 arel squeel

我在Squeel中有以下查询:

languages = where{ (name == 'English') | 
 (name == 'Spanish')  | 
 (name == 'German')  | 
 (name == 'French')  | 
 ...
}

哪种方法可以正常工作,但如果有一种方法可以使用这些值迭代数组,以便更容易添加和删除语言,那么我正在讨论。假设我创建了数组:

languages_array = %w[ English Spanish French ... ]

有没有办法在Where块中使用Squeel进行迭代?

我已经尝试了所有我能想到的但没有成功的事情。

感谢。

2 个答案:

答案 0 :(得分:3)

我认为这应该有用

where{name.in(languages_array)}

答案 1 :(得分:0)

此类查询不需要squeelwhere(name: languages_array)会做你需要的 - 它会转换为

WHERE name IN ('English', 'Spanish', 'French', ...)

这可能是你需要的。