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!

War es hilfreich?

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
scroll top