我在我的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,它只是重新定义查询并为我提供最旧的评论,而不是最新的评论。
如何检索集合并对该对象进行排序,而不是简单地更改查询的范围?
答案 0 :(得分:2)
如果你在mongoid查询上调用to_a,它将在那时执行查询。
comments = user.comments.desc(:created_at).page(params[:page])
comments.to_a.reverse.each do |comment|
- render the comment
所以我们调用一个数组的注释,然后反转数组