Conditions ActiveRecord d'une association (Rails)
-
05-07-2019 - |
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!
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