Попробуйте смоделировать очередь с ActiveRecord
Queue.has_many :tasks
атрибуты: имя, идентификатор, временные метки
Task.belongs_to :queue
атрибуты: имя, идентификатор, должность, временные метки, заполнено
Используйте временные метки для установки начальной позиции. Как только задача завершена, установите позицию [наивысшая позиция] +1 (при условии, что чем меньше номер позиции, тем выше вверх в очереди) Завершенные задачи опустятся на дно очереди, а новая задача поднимется на вершину.
Надеюсь, это поможет!