0

私がモデルを持っているふりをして、has_many:commentsを投稿します。コメントのある投稿のみを表示するにはどうすればよいですか?

私はnamed_scopeにある程度慣れていますが、シンボルを期待する:conditionsハッシュにPost.comments(またはself.comments)を配置する方法がわかりません。

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

コメント欄には何を書けばいいですか?

ありがとう!

4

2 に答える 2

2

個別の行を選択することを確認して、コメントテーブルに対して結合できるはずです

named_scope :with_comments, :joins => :comments, :select => 'DISTINCT posts.*'
于 2009-06-16T22:27:55.913 に答える
1

Post に counter_cache を配置することをお勧めします。

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

その後、2 つではなく 1 つのクエリを実行するだけで済みます。

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

于 2009-06-17T03:53:07.703 に答える