Propre façon de trouver ActiveRecord objets par id dans l'ordre spécifié

Je veux obtenir un tableau de ActiveRecord objets donné un tableau d'id.

Je suppose que

Object.find([5,2,3])

Serait de retourner un tableau avec l'objet 5, de l'objet 2, puis l'objet 3 dans cet ordre, mais au lieu de cela je obtenir un tableau ordonné que l'objet 2 objet 3 et puis l'objet 5.

La ActiveRecord Base trouver la méthode de l'API mentionne qu'il ne faut pas s'attendre, dans l'ordre fourni (d'autres documents n'a pas cet avertissement).

Une solution potentielle a été donné dans Trouver par tableau d'id dans le même ordre?, mais de l'ordre d'option ne semble pas être valide pour SQLite.

Je peux écrire du code ruby pour trier les objets par moi-même (que ce soit quelque chose de simple et peu mise à l'échelle ou de la meilleure mise à l'échelle et plus complexe), mais est-il Une Meilleure Façon?

  • Où sont les id en venir? Si c'est l'INTERFACE utilisateur (via un utilisateur de les sélectionner), puis mise à l'échelle ne devrait pas être un problème, c'est que l'utilisateur est peu probable de passer du temps à la sélection de plus de 1000 id). Si c'est la base de données (par exemple, à partir d'une table de jointure), pourriez-vous le magasin de l'ordre dans la table de jointure et la question en se basant sur qui?
  • Il ressemble à ce qui est n'est plus vrai dans les Rails 5.
InformationsquelleAutor Andrew Grimm | 2009-04-29