Rails - 过去6个小时内评论次数最多的帖子

时间:2017-02-03 10:24:57

标签: ruby-on-rails postgresql

我可以轻松找到过去6小时内评论过的帖子。但是,我不知道如何根据过去6小时内的评论数量订购这些帖子。

这就是我的全部:

Post.includes(:comments).where(comments: {created_at: 6.hours.ago...Time.now})

我该如何订购?如果最好的方法是使用SQL查询,我会使用PostgreSQL,如果它有任何区别。

2 个答案:

答案 0 :(得分:0)

我认为最简单的方法是为Post模型创建一个返回注释计数的辅助方法:

def comments_count
  comments.count
end

您现在可以:

Post.includes(:comments).where(created_at: 6.hours.ago...Time.now).order(:comments_count)

没有辅助方法可能会这样做,我不确定但是如果你想尝试:

Post.includes(:comments).where(created_at: 6.hours.ago...Time.now).order(:comments.count)

答案 1 :(得分:0)

我相信你想要这样的东西:

Post.joins(:comments).where('comments.created_at BETWEEN ? AND ?', 6.hours.ago, Time.now).group('posts.id').order('COUNT(comments.id)')

如果您的要求不同,请随时发表评论,我会尝试修改答案。