0

I'm transitioning an application written in Rails-2.3 with SearchLogic to Rails-3.0 with Arel and MetaWhere, and I'm running into an operation that I don't know how the write.

The old code was:

if params[:city] && params[:city].respond_to?(:each)
  users = users.person_address_city_like_any(params[:city])
end

what this did was run a LIKE match against each item in the params[:city] array.

This is easy enough in MetaWhere when there's only one search term:

users = users.where(:person => { :address => { :city.matches => '%city1%' } })

but how would I write this with an arbitrary number of cities?

Adam Lassek
  • 35,156
  • 14
  • 91
  • 107

1 Answers1

5

Try:

users = users.where(:person => { :address => { :city.matches_any => ['%city1%','%city2%'] } })

Ernie
  • 896
  • 5
  • 7