我正在使用acts_as_commentable_with_threading gem 让用户能够评论我的博客文章。
我现在要做的是显示评论最多的帖子,但我不知道如何查询它们(据我所知,gem 不提供这种方法)。你能给我写一些提示或想法如何实现这样的目标吗?
我正在使用acts_as_commentable_with_threading gem 让用户能够评论我的博客文章。
我现在要做的是显示评论最多的帖子,但我不知道如何查询它们(据我所知,gem 不提供这种方法)。你能给我写一些提示或想法如何实现这样的目标吗?
这是我用来返回发布最多项目的顶级用户的方法。它可以帮助您解决问题。我把它放在 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 %>
对于 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)