多个LIKE与Arel&匹配。 MetaWhere

时间:2010-11-30 03:17:00

标签: ruby-on-rails ruby-on-rails-3 searchlogic arel meta-where

我正在将带有SearchLogic的Rails-2.3编写的应用程序转换为带有Arel和MetaWhere的Rails-3.0,并且我遇到了一个我不知道怎么写的操作

旧代码是:

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

这样做是针对params [:city]数组中的每个项目进行LIKE匹配。

当MetaWhere中只有一个搜索词时,这很容易:

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

但我如何用任意数量的城市写这个?

1 个答案:

答案 0 :(得分:4)

尝试:

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