ruby - 使用自定义开始时间按时间排序数据
问题描述
我正在使用 Rails 构建一个时间表应用程序,我需要按时间订购一些记录,但是我希望开始时间是 05:00 而不是 00:00
我的查询如下所示:
@timetable_entries.order(departure_time: :asc)
结果:
00:30
03:30
05:30
...
但是我希望我的一天从早上 5 点开始,因此生成的数据应该如下所示:
05:30
00:30
03:30
有谁知道这样做的干净方法?
提前致谢。
解决方案
最简单的方法可能是编写自己的比较器。rubysort
方法可以采用一个块(此处的文档),允许您使用自定义比较方法进行排序。您可以使用该方法指示 5:00 早于 0:00 到 4:59 之间的所有时间。
代码看起来像:
@timetable_entries.sort do |time1, time2|
# your custom comparison here
end
推荐阅读
- c++ - 为什么这个 cppreference 摘录似乎错误地暗示原子可以保护关键部分?
- matlab - 如何在 MATLAB 中求解包含符号的方程组?
- sql-server - SQL Server 机器学习服务 - 无法启动运行时。ErrorCode 0x80070032: 50(不支持该请求。)
- java - 使用 Neo4j 的休眠 OGM - 与服务器的应用程序连接失败
- flask - Flask 上 OAuth 的单元测试
- python - 为什么 OpenCV 会创建奇怪的矩形?
- node.js - multer上传带有正文和验证的文件并将文件名保存到数据库
- c++ - 从 csv 文件加载二维数组大小问题
- javascript - jQuery、JSON 实时搜索
- emacs - 如何在遵守`.gitignore`的同时运行递归`dired-maybe-insert-subdir`?