Возможно, что указанная вами временная метка не сохраняется, и Rails использует свои собственные внутренние метки времени при создании объектов. Вы можете попробовать:
5.times do |t|
thing = create(:model)
thing.update_column(:created_at, Time.current.advance(days: -1*(t+1))
end
Это позволит обойти любую проверку модели, и вы должны сохранить правильные временные метки, и тогда вы сможете заказать их, как и ожидалось.
Вы можете проверить, сохранив результаты запроса в переменной results
, а затем что-то вроде:
expect(results[0].created_at < results[1].created_at).to be true
Еще одна вещь, которую вы можете попробовать - YourModel.unscope.where(...).order(created_at: :desc)
. Может быть область, которую вы не видите, которая влияет на порядок.