Question

Imaginez que j'ai un modèle, Post qui has_many: comments. Comment puis-je uniquement afficher les publications contenant des commentaires?

Je suis un peu à l'aise avec named_scope mais je ne sais pas comment je peux mettre Post.comments (ou self.comments) dans le hachage: conditions qui attend des symboles.

class Post < ActiveRecord::Base
     has_many :comments
     named_scope :with_comments, :conditions => [#self.comments.length > 0]
end

Qu'est-ce que j'écris dans la zone commentée?

Merci!

Était-ce utile?

La solution

Il serait peut-être préférable de mettre un counter_cache sur Post.

class Comment < AR:Base
  belongs_to :post, :counter_cache => true
end

Ensuite, il vous suffit de faire une requête au lieu de deux.

Post.find (: all,: conditions = > [& counter; cache > 0 "])

Autres conseils

Vous devriez pouvoir simplement vous joindre à votre tableau de commentaires en vous assurant de sélectionner les différentes lignes

named_scope :with_comments, :joins => :comments, :select => 'DISTINCT posts.*'
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top