Сортировка пагинированной коллекции монгоидов в Rails

Я использую жемчужину разбиения на страницы (kaminari) в своем приложении Rails и с трудом сортирую коллекцию документов Mongo.

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

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

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

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

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

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


person Greg    schedule 17.08.2011    source источник


Ответы (1)


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

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

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

person Jesse Wolgamott    schedule 17.08.2011
comment
Блестяще, спасибо! Не знаю, насколько это было очевидно, но я новичок. Ценю вашу помощь. - person Greg; 17.08.2011