Domanda

Fai finta di avere un modello, Post che has_many: commenti. Come posso visualizzare solo i post che hanno commenti?

Sono abbastanza a mio agio con named_scope ma non so come inserire Post.comments (o self.comments) nell'hash: condizione che prevede simboli.

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

Cosa scrivo nell'area commentata?

Grazie!

È stato utile?

Soluzione

Meglio potrebbe essere un counter_cache su Post.

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

Quindi devi solo fare 1 query invece di due.

Post.find (: all,: condizioni = > [" counter_cache > 0 "])

Altri suggerimenti

Dovresti essere in grado di unirti alla tabella dei commenti, assicurandoti di selezionare le righe distinte

named_scope :with_comments, :joins => :comments, :select => 'DISTINCT posts.*'
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top