2010-10-05 4 views
0

J'ai des articles et des catégories dans un: m relation:rails: catégories de filtre où il y a au moins un article

Je recherche une déclaration de découverte sur le modèle de la catégorie pour que je puisse obtenir consiste witch toutes les catégories au moins un article.

Devrait être facile, mais je n'ai pas trouvé une solution efficace, sans chercher à récupérer tous les articles.

Merci, Maechi

Répondre

1

je pense que le cache de compteur est votre ami ici. Jetez un oeil here.

Vous pouvez ajouter le cache du compteur à la table categories et dans les CategoryArticles que vous faites comme

class CategoryArticles 
    belongs_to :article 
    belongs_to :category, :counter_cache => true 
end 

Ainsi, vous pouvez trouver votre catégorie avec

@categories = Category.find(:all, :conditions => ["category_articles_count > ?", 0]) 
+0

Cest exactement ce que je avais besoin! Savez-vous comment je le fais quand je n'ai pas le modèle CategoryArticles en implémentant simplement la propriété has_and_belongs_to_many? – Markus

+0

Je ne suis pas sûr que vous pouvez le faire avec un 'has_and_belong_to_many'. Ma suggestion est de le faire comme ça. CategoryArticles classe belongs_to: article belongs_to: catégorie: counter_cache => true fin classe Catégorie has_many: articles,: à travers =>: category_articles has_many: category_articles fin classe Article has_many: catégories, : through =>: category_articles has_many: category_articles fin – Fran

+1

Juste vu que vous ne pouvez pas formater le code dans les commentaires ... vous pouvez jeter un oeil dans cet article http://gist.github.com/611736 – Fran

Questions connexes