2016-02-25 3 views
0

j'ai une requête ActiveRecord commeAjouter « sélectionner » balises à la requête ActiveRecord avec acts_as_taggable_on

Post.where("likes > 3") 

et je voudrais avoir obtenir les balises de acts_as_taggable_on pour Poster sur mon résultat. Par exemple quelque chose comme

Post.select("posts.*, tag_list").where("likes > 3") 

Il est évident que cela ne fonctionne pas, il y a beaucoup de jointures qui doivent se produire pour obtenir les étiquettes liées à la Poste de acts_as_taggable_on. Est-ce que acts_as_taggable_on fournit un moyen de 'sélectionner' les tags?

Je peux accéder aux balises avec quelque chose comme ceci:

Post.where("likes > 3").each do |p| 
    puts p.to_json 
    puts p.tag_list.to_json 
end 

mais qui se traduit par un grand nombre de requêtes, car il y a beaucoup de messages. Y a-t-il un meilleur moyen?

Répondre

0

J'ai trouvé un moyen de le faire fonctionner, mais j'espérais un meilleur moyen, construit dans acts_as_taggable_on. Peut-être qu'il y a un meilleur moyen, mais cela semble fonctionner:

Post.select("posts.*, tags.name as tag") 
    .where("likes > 3") 
    .joins(:taggings) 
    .joins("LEFT OUTER JOIN tags on tags.id = taggings.tag_id")