我可以轻松找到过去6小时内评论过的帖子。但是,我不知道如何根据过去6小时内的评论数量订购这些帖子。
这就是我的全部:
Post.includes(:comments).where(comments: {created_at: 6.hours.ago...Time.now})
我该如何订购?如果最好的方法是使用SQL查询,我会使用PostgreSQL,如果它有任何区别。
答案 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)')
如果您的要求不同,请随时发表评论,我会尝试修改答案。