我有一系列用户,他们每个人都发表了许多帖子(并且帖子会收到“视图”),并且我过去以各种方式对它们进行了排序。
例如,以下是浏览次数最多的 8 个用户:
@most_viewed = User.sort_by{|user| user.views}
然后在我的模型中,user.rb 文件:
def views
self.posts.sum(:views) || 0
end
这在过去工作得很好。
问题是我的排序使用了 sort_by 方法,它不能很好地与 will_paginate gem 配合使用,因为它返回一个数组而不是关系。
如何在 Rails 3、Active Record 关系、延迟加载样式中执行以下操作?例如,作为命名范围?
- 拥有至少一篇帖子的用户
- 帖子总浏览量最多的用户
- 拥有最多查看次数的帖子的用户(不是总数)
- 拥有最新帖子的用户
- 发帖数最多的用户