按今天添加的评论排名

时间:2014-04-25 22:54:35

标签: ruby-on-rails ruby-on-rails-4 rails-activerecord

我有两个模型:帖子和评论。我想按照今天添加的评论数量对帖子进行排名。到目前为止,我只按评论数量排名,不知道如何添加今天的部分。

这是帖子控制器:

@posts = Post.order('posts.comments_count desc')

我试过了

@posts = Post.order('posts.comments_count desc').where("created_at >= ?", Time.zone.now.beginning_of_day)      

但是没有返回。

1 个答案:

答案 0 :(得分:3)

您的第二个问题是为您提供今天创建的帖子的数量,而不是今天创建的评论数量。

这应该是您正在寻找的:

@posts = Post.select('posts.*, count(comments.id) as count_comments')
             .joins(:comments)
             .where('comments.created_at >= ?', Time.zone.now.beginning_of_day)
             .group('posts.id')
             .order('count_comments desc')

如果您想要包含所有帖子,包括今天没有评论的帖子,那么您需要left join

@posts = Post.select('posts.*, count(comments.id) as count_comments')
             .joins("left join comments on comments.post_id = posts.id and comments.created_at >= '#{Time.zone.now.beginning_of_day}'")
             .group('posts.id')
             .order('count_comments desc')