首页 > 解决方案 > 使用自定义开始时间按时间排序数据

问题描述

我正在使用 Rails 构建一个时间表应用程序,我需要按时间订购一些记录,但是我希望开始时间是 05:00 而不是 00:00

我的查询如下所示:

@timetable_entries.order(departure_time: :asc)

结果:

00:30
03:30
05:30
...

但是我希望我的一天从早上 5 点开始,因此生成的数据应该如下所示:

05:30
00:30
03:30

有谁知道这样做的干净方法?

提前致谢。

标签: rubyactiverecordruby-on-rails-5

解决方案


最简单的方法可能是编写自己的比较器。rubysort方法可以采用一个块(此处的文档),允许您使用自定义比较方法进行排序。您可以使用该方法指示 5:00 早于 0:00 到 4:59 之间的所有时间。

代码看起来像:

@timetable_entries.sort do |time1, time2|
  # your custom comparison here
end

推荐阅读