获取评论最多的对象

时间:2012-07-12 12:48:51

标签: ruby-on-rails ruby-on-rails-3 acts-as-commentable

我正在使用acts_as_commentable_with_threading gem让用户能够评论我的博文。

我现在要做的是显示大多数评论的帖子,但我不知道如何查询它们(据我所知,gem没有提供这样的方法)。你能给我一些如何实现这样的提示或想法吗?

2 个答案:

答案 0 :(得分:5)

这是一种方法,用于返回发布最多项目的热门用户。它可以帮助您解决问题。我将它放在Application Helper中,因为它是我的侧面导航栏的一部分,将在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 %>

答案 1 :(得分:2)

对于Rails 4 +

你应该使用这样的东西:

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)