4

私はacts_as_commentable_with_threadinggemを使用して、ユーザーが私のブログ投稿にコメントできるようにしています。

私が今やりたいのは、コメントされた投稿のほとんどを表示することですが、それらをクエリする方法がわかりません(そして、私が知る限り、gemはそのような方法を提供していません)。そのようなことを達成するためのヒントやアイデアを教えていただけますか?

4

2 に答える 2

5

これは、最も多くのアイテムを投稿したトップユーザーを返すために使用するメソッドです。それはあなたの問題であなたを助けるかもしれません。これはサイドナビゲーションバーの一部であり、Webアプリケーションのすべてのページで使用されるため、アプリケーションヘルパーに配置しました。

def top_posters
    User.all(:select => "users.*, COUNT(user_id) as post_count",
       :joins => "LEFT JOIN posts AS posts ON posts.user_id = users.id",
       :group => "posts.user_id",
       :order => "post_count DESC",
       :limit => 5)
end

私の見解では、私は

<% top = top_posters() %>
<% for t in top %>
    <li><%= link_to t.username, user_path(t) %>
        (<%= t.posts.public_posts.count %>)</li>
<% end %>
于 2012-07-12T14:05:25.427 に答える
2

Rails4+の場合

次のようなものを使用する必要があります。

Article.select("articles.*, COUNT(commentable_id) as comments_count")
                    .joins("LEFT JOIN comments AS comments ON comments.commentable_id = articles.id")
                    .group("comments.commentable_id")
                    .order("comments_count DESC")
                    .where("commentable_type = 'Article'")
                    .limit(5)
于 2015-01-18T00:27:50.543 に答える