Сортировка разбитой на страницы коллекции Mongoid в Rails - PullRequest
0 голосов
/ 17 августа 2011

Я использую гем pagination (kaminari) в своем приложении Rails и с трудом сортирую коллекцию документов Mongo.

Сначала я структурирую свой запрос, который состоит в том, чтобы получить одну страницу из всехНовые комментарии для пользователя:

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

По умолчанию это даст мне 25 записей.Затем я хочу отобразить каждый комментарий, но теперь измените порядок так, чтобы самый новый комментарий был внизу:

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

Однако, вызывая asc для моей переменной comments, он просто переопределяет запрос и даетмне самые старые комментарии для этого пользователя, а не самые новые комментарии.

Как получить коллекцию и отсортировать этот объект, а не просто изменить область моего запроса?

1 Ответ

2 голосов
/ 17 августа 2011

Если вы вызовете to_a для mongoid-запроса, он выполнит запрос в этот момент.

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

Итак, мы вызываем комментарии к массиву, а затем обращаем массив обратно

...