2009-11-15 4 views
3

Est-il possible d'utiliser les options: limit et: order dans la méthode find. J'essaie de trier les activités par ordre décroissant, de sorte que les activités les plus récentes soient affichées. Cependant, quand j'essaie d'utiliser le (: all,: limit => 5,: order => 'Date desc), j'obtiens une erreur. Je dois limiter à seulement 5 enregistrements, et quand je néglige l'option de commande, il fonctionne, mais pas ce que je dois ...Utilisation de: order et: options de limite - Ruby On Rails

Merci

Répondre

9

Je pense que vous avez manqué une citation dans votre exemple.

Model.find (: all,: limit => 5,: order => 'created_at desc')

Assurez-vous qu'une colonne de date existe dans votre table.

+0

Je l'ai essayé, mais je reçois cette erreur Une expression dans la clause ORDER BY dans la position suivante ou départ avec "DATE" dans la clause "ORDER BY" n'est pas valide. Code de raison = "2". SQLSTATE = 42822 – user211662

+1

Il ne peut pas être appelé "Date". Essayez "date", "created_at" ou "updated_at". – dylanfm

0

Votre colonne de date est-elle réellement appelée date? D'abord, je changerais cela, date est le nom d'une fonction dans la plupart des bases de données, qui pourrait être la cause de l'erreur que vous voyez. Rails utilise created_at, updated_at, etc, donc suivre ce schéma de nommage rendra votre code plus lisible pour les futurs responsables.

Vous pouvez essayer de citer le nom de colonne dans le dos-tiques:

:order => "`date` desc" 
+0

Malheureusement, le problème n'est pas en ce qui concerne la colonne de date, cela fonctionne parfaitement quand je n'utilise pas l'option: limite, il fait le tri par date décroissante. Je sais que le nom de la colonne n'est pas souhaitable, mais il ne peut pas être changé maintenant. L'option limite fonctionne lorsque je l'utilise sans l'option de commande et vice versa – user211662

+0

Pouvez-vous publier le journal de ce que SQL tente d'exécuter? –