De query die u wilt maken is:
MyClass.where(
:name.in => [ 'John', 'Luke' ],
:status.in => [ 'ACTIVE', 'SUSPENDED' ]
)
Een :field.in
werkt hetzelfde als field in (...)
in SQL en dat is slechts een korte vorm voor een or-statement. Dat maakt de zaken een stuk eenvoudiger omdat je gewoon .in
. hoeft toe te voegen oproepen naar de criteria
sleutels waarvan de waarden arrays zijn, zoiets als dit:
query = criteria.each_with_object({}) do |(field, values), query|
field = field.in if(values.is_a?(Array))
query[field] = values
end
MyClass.where(query)