我的Rails应用中有Posts
和Comments
。我想显示按最近活动排序的Posts
,这意味着带有最新评论的帖子排在最前面。
我现在有这个SQL和几个问题:
Post.left_outer_joins(:comments).order('comments.id DESC').uniq
如您所见,它连接了两个表并对结果进行排序
问题是:
Posts
没有Comments
,则这些Posts
始终按照创建时的降序顺序始终显示在第一位,但是我希望没有评论的帖子A出现在具有评论的帖子B后面,比发布A 非常感谢您为解决这两个问题之一或同时解决这两个问题所提供的帮助,谢谢
编辑: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