2011-06-07 3 views
4

Je suis en train d'interroger un OU OU dans un acte-que-tagable sur requête, comme si ...agit-comme-taggable-sur tagged_with ou_where?

Business.tagged_with(params[:query], :any => true) 

Mais je voudrais aussi faire en même temps un or_where comme celui-ci ...

Business.tagged_with(params[:query], :any => true).or_where('name LIKE ?', "%#{params[:query]}%") 

Cela ne marche évidemment pas car il n'y a pas de méthode or_where mais est-ce que quelqu'un sait comment l'effectuer correctement?

En bref, j'essaie de trouver une correspondance avec les balises OU le nom de l'entreprise. Merci.

Répondre

3

Vous pouvez OU deux requêtes ensemble en utilisant le | opérateur comme si:

Business.tagged_with(params[:query], :any => true) | Business.where('name LIKE ?', "%#{params[:query]}%") 

Notez que cela charge les résultats impatients, vous ne pouvez pas appliquer les conditions plus après cela, comme la commande. Il retournera un tableau avec tous les résultats correspondants, à l'exclusion des doublons.

+0

Hé, désolé pour le retard, oui cela fonctionne très bien. Merci. –

+0

Cela ne fonctionnera pas si vous avez la pagination, car il ne tiendra pas compte de cela. –