在Rails中排序Paginated Mongoid集合

时间:2011-08-17 01:07:08

标签: ruby-on-rails mongodb mongoid kaminari

我在我的Rails应用程序中使用了分页宝石(kaminari),并且很难对Mongo文档集合进行排序。

首先,我构建了我的查询,即为用户检索一页价值的所有最新评论:

comments = user.comments.desc(:created_at).page(params[:page])

默认情况下,这会给我25条记录。然后我想渲染每个评论,但现在反转顺序,以便最新的评论将在底部:

comments.asc(:created_at).each do |comment|
  - render the comment

然而,通过在我的comments变量上调用asc,它只是重新定义查询并为我提供最旧的评论,而不是最新的评论。

如何检索集合并对该对象进行排序,而不是简单地更改查询的范围?

1 个答案:

答案 0 :(得分:2)

如果你在mongoid查询上调用to_a,它将在那时执行查询。

comments = user.comments.desc(:created_at).page(params[:page])
comments.to_a.reverse.each do |comment|
  - render the comment

所以我们调用一个数组的注释,然后反转数组