Condizioni di ActiveRecord di un'associazione (Rails)
-
05-07-2019 - |
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!
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