2011-08-17 2 views
0

J'utilise une gemme de pagination (kaminari) dans mon application Rails et j'ai du mal à trier une collection de documents Mongo.Tri d'une collection Mongoid Paginée dans les rails

Première structure I ma requête, ce qui est de récupérer une page valeur de tous les nouveaux commentaires pour un utilisateur:

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

Par défaut cela me donnera 25 dossiers. Je veux donc rendre chaque commentaire, mais maintenant inverser l'ordre pour que le dernier commentaire sera sur le fond:

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

Cependant, en appelant asc sur mes commentaires, il vient de redéfinir la requête et de me donner la les commentaires les plus anciens pour cet utilisateur, pas les commentaires les plus récents.

Comment puis-je récupérer la collection et trier cet objet, plutôt que de simplement changer la portée de ma requête?

Répondre

2

Si vous appelez to_a sur une requête mongoid, il exécutera la requête à ce moment-là.

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

Nous appelons les commentaires à un tableau, puis en inversant le tableau

+0

brillant, je vous remercie! Je ne sais pas à quel point c'était évident, mais je suis nouveau. Apprécier ton aide. – Greg

+0

De rien - ce n'est pas un comportement évident de mongoïde. –