2017-02-21 1 views
0

Dans ma boutique, je dois trouver un produit qui a un ou plusieurs tags dans une liste de tags. Les tags en spree sont réalisés avec la gemme acts-as-taggable-on.Trouver tous les produits avec un mot-clé dans la liste

J'ai essayé de le faire avec

Spree::Product.joins("spree_taggings").where("taggings.id IN (?)", list_of_tag_ids) 

mais il ne semble pas fonctionner.

Comment pourrais-je rechercher des produits par leurs étiquettes?

+0

pouvez-vous s'il vous plaît poster les associations ainsi –

Répondre

1

Recherche par ID est nécessaire? Si vous pouvez rechercher par nom, vous pouvez utiliser la construction portée .tagged_with

Spree::Product.tagged_with(["awesome", "cool"], :match_all => true) 

Docs: https://github.com/mbleigh/acts-as-taggable-on#finding-tagged-objects

Si la recherche par ID est vraiment nécessaire, vous pourriez attraper les premiers bien sûr.

ActsAsTaggableOn::Tag.where("id IN (?)", list_of_tag_ids).pluck(:name) 
+0

Ah, tagged_with(). J'ai oublié cela. Je vais devoir le tester bientôt. – Qwertie