Несколько LIKE совпадений с Arel & MetaWhere - PullRequest
0 голосов
/ 30 ноября 2010

Я перевожу приложение, написанное на Rails-2.3 с SearchLogic , на Rails-3.0 с Arel и MetaWhere , и выполняю операцию, которую я не уметь писать.

Старый код был:

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

для этого было выполнено сопоставление LIKE с каждым элементом в массиве params [: city].

Это достаточно просто в MetaWhere, когда есть только один поисковый запрос:

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

а как мне написать это с произвольным числом городов?

1 Ответ

4 голосов
/ 30 ноября 2010

Попробуйте:

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

...