2010-11-30 22 views
0

Je suis en train de passer une application écrite en Rails-2.3 avec SearchLogic à Rails-3.0 avec Arel et MetaWhere, et je cours dans une opération que je ne sais pas comment écrire.Correspondances LIKE multiples avec Arel & MetaWhere

L'ancien code était:

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

cela a permis d'exécuter un match LIKE contre chaque élément dans les params: Array [ville].

Ceci est assez facile à MetaWhere quand il n'y a qu'un seul terme de recherche:

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

mais comment pourrais-je écrire cela avec un nombre arbitraire de villes?

Répondre

4

Essayez:

utilisateurs = users.where (: personne => {: adresse => {: city.matches_any => [ '% city1%', '% city2%']}})

+0

Merci. Je suis très impressionné par MetaWhere jusqu'à présent. –

+0

comment puis-je faire exactement la même chose lorsque les conditions proviennent d'une chaîne: "person.address.city"? –