嵌套资源创建日期后如何在资源上排序查询结果

时间:2018-09-20 05:00:45

标签: ruby-on-rails

我的Rails应用中有PostsComments。我想显示按最近活动排序的Posts,这意味着带有最新评论的帖子排在最前面。

我现在有这个SQL和几个问题:

Post.left_outer_joins(:comments).order('comments.id DESC').uniq

如您所见,它连接了两个表并对结果进行排序

问题是:

  • 如果Posts没有Comments,则这些Posts始终按照创建时的降序顺序始终显示在第一位,但是我希望没有评论的帖子A出现在具有评论的帖子B后面,比发布A
  • 更新

非常感谢您为解决这两个问题之一或同时解决这两个问题所提供的帮助,谢谢

编辑:1问题只是我的一个粗心的错误

1 个答案:

答案 0 :(得分:3)

Post
  .left_outer_joins(:comments)
  .group("posts.id, comments.created_at")
  .order('COUNT(comments.id) DESC, comments.created_at DESC').uniq

对于分页错误,您需要在控制器中添加此行

require 'will_paginate/array'

示例:-

class ExampleController < ApplicationController
  require 'will_paginate/array'
end

结帐here