我正在 Ruby on Rails 中构建一个电视剧调度应用程序,该应用程序根据当前电视上的内容执行某些操作。用户可以创建具有开始日期和结束日期的系列,并且可以为这些系列创建广播。广播可以在三个 channel 之一上进行,形式为“每周二, channel 2,从 10:00:00 到 14:00:00”。
目前,我将这些广播存储在 MySQL 中,其中包含以下列:wday
整数、starts_at
和 ends_at
时间字段,和一个 channel_id
整数。因此,上述广播将存储为 wday
2、channel_id
2、starts_at
"10:00:00"和 ends_at
“14:00:00”,以及对其所属事件的引用。广播可以“跨越”午夜,因此应用程序应允许以“23:00:00”开始并以“02:00:00”结束(即第二天凌晨 2 点)的广播。
我遇到了以下两个问题的严重问题:
只能在特定时间、特定时间安排一次广播 channel 。该应用程序需要验证用户输入,并检查是否 存在特定 channel 和时间的广播。
应用程序需要显示当前显示的广播(如果有) 三个 channel 中的。基本上,对于每个 channel ,找到一个广播 开始时间 < 当前时间 < 结束时间。显然,这需要 也可以处理午夜广播。
我完全不确定使用时间字段作为开始/结束时间是否是最佳解决方案。请记住,我需要存储时间值,而不是日期,因为在该系列的持续时间内每周二都会进行广播。
您将如何存储这些广播,允许验证并允许在特定时间附近查询,允许广播“跨越”午夜?
最佳答案
这种问题是边缘情况的雷区,我总是将逻辑委托(delegate)给像 IceCube ( https://github.com/seejohnrun/ice_cube ) 这样的东西。它是为了处理这些类型的重复计划而设计的,并且对序列化等提供了简单的支持。即使它需要重新思考你如何做事,我也强烈建议使用它。
关于mysql - 安排事件并让事件跨越午夜,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16853284/