Active Bedingungen eines Verbandes (Rails)
-
05-07-2019 - |
Frage
Pretend Ich habe ein Modell, posten, die has_many: Kommentare. Wie kann ich nur Beiträge anzeigen, die Kommentare?
Ich bin etwas komfortabel mit named_scope aber ich weiß nicht, wie ich Post.comments (oder self.comments) im setzen kann. Bedingungen Hash, die Symbole erwartet
class Post < ActiveRecord::Base
has_many :comments
named_scope :with_comments, :conditions => [#self.comments.length > 0]
end
Was muss ich im kommentierten Bereich schreiben?
Danke!
Lösung
Besser könnte sein, ein counter_cache auf Post zu setzen.
class Comment < AR:Base
belongs_to :post, :counter_cache => true
end
Dann brauchen Sie nur 1 Abfrage statt zwei zu tun.
Post.find(:all, :conditions => ["counter_cache > 0"])
Andere Tipps
Es soll möglich sein, nur gegen Ihre Kommentare Tisch sitzen, um sicherzustellen, die unterschiedlichen Reihen wählen
named_scope :with_comments, :joins => :comments, :select => 'DISTINCT posts.*'
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow