The where
method on any ActiveRecord model can be used to generate SQL of the form WHERE column_name IN (a, b, c, ...)
. This is achieved by passing an array as argument.
As a simple example, we will use the following model:
class Person < ActiveRecord::Base
#attribute :first_name, :string
#attribute :last_name, :string
end
people = Person.where(first_name: ['Mark', 'Mary'])
people.to_sql # "SELECT * FROM people WHERE first_name IN ('Mark', 'Mary')"
If the array contains a nil
, the SQL will be modified to check if the column is 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"