0

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

これが行ったLIKEことは、params [:city]配列の各アイテムに対して一致を実行することでした。

これは、検索語が1つしかないMetaWhereでは簡単です。

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

しかし、これを任意の数の都市でどのように書くのでしょうか?

4

1 に答える 1

5

試す:

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

于 2010-11-30T12:54:01.777 に答える