Реляционные базы данных основаны на множествах и, следовательно, изначально неупорядочены; порядок записей в наборе результатов определяется только предложением ORDER BY. Если две строки имеют одинаковые значения для выражения в предложении ORDER BY, то выполнение одного и того же запроса дважды может вернуть эти строки в разные позиции; изменение запроса путем добавления LIMIT и OFFSET только усугубляет ситуацию, делая более вероятным другой порядок.
Если вы хотите, чтобы база данных предоставляла вам строки в определенном порядке, вы должны полностью указать порядок в своем предложении ORDER BY. Вы должны добавить больше к вызову order
в своей области:
...order('offers.discount desc, offers.created_at asc')
или что-то в этом роде в зависимости от того, какой именно заказ вам нужен.