2010-11-30 14 views
0

Ich übertrage eine Anwendung geschrieben in Rails-2.3 mit SearchLogic zu Rails-3.0 mit Arel und MetaWhere, und ich renne in eine Operation, die ich nicht weiß, wie das Schreiben.Mehrere LIKE Übereinstimmungen mit Arel & MetaWhere

Der alte Code war:

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

was dies ein LIKE Spiel gegen jedes Element in dem params lief wurde [: Stadt] Array.

Dies ist leicht genug, um in MetaWhere, wenn nur ein Suchwort gibt es:

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

aber wie würde ich dies schreibt mit einer beliebigen Anzahl von Städten?

Antwort

4

Versuchen:

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

+0

Danke. Ich bin sehr beeindruckt von MetaWhere bisher. –

+0

Wie kann ich genau das gleiche tun, wenn die Bedingungen von einem String kommen: "person.address.city"? –

Verwandte Themen