4

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

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

4

2 回答 2

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 %>
于 2012-07-12T14:05:25.427 回答
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)
于 2015-01-18T00:27:50.543 回答