where任何ActiveRecord模型上的方法都可以用于生成形式为SQL的SQL WHERE column_name IN (a, b, c, ...)。这可以通过将数组作为参数来实现。
作为一个简单的示例,我们将使用以下模型:
class Person < ActiveRecord::Base #属性:first_name,:string #属性:last_name,:string end people = Person.where(first_name: ['Mark', 'Mary']) people.to_sql # "SELECT * FROM people WHERE first_name IN ('Mark', 'Mary')"
如果数组包含a nil,则将修改SQL以检查该列是否为null:
people = Person.where(first_name: ['Mark', 'Mary', nil]) people.to_sql # "SELECT * FROM people WHERE first_name IN ('Mark', 'Mary') OR first_name IS NULL"