ActiveRecord orden por matriz externa

Tengo una matriz de identificadores, almacenados en algún almacenamiento externo (rails cache o redis). En la acción del controlador, obtengo estos datos y selecciono el objeto que lo usa, es decir,

ids = [5, 1, 17, 84] # really fetched from external source
result = MyModel.where(:id => ids)

También quiero que se ordene igual que los identificadores en array_of ids:

ids == result.map(&:id) # => true

omo solución alternativa, uso la ordenación por la función de campo de mysql:

MyModel.where(:id => ids).order("FIELD(id, #{ids.join ', '})")

Pero no me gusta este enfoque, ya que es específico de MySQL y crea consultas muy largas en caso de grandesids matriz. ¿Hay alguna manera mejor y agnóstica de DB de hacerlo? No es deseable recuperar datos no ordenados de DB y ordenarlos en el lado rubí porque es costoso en recursos y difícil de usar con paginación.

Gracias

Respuestas a la pregunta(6)

Su respuesta a la pregunta