我有一个大型rails应用程序,用于配置工厂的设置。
应用程序基本上有几个页面允许不同实体的CRUD操作,并且有许多验证可以强制它们之间的各种依赖关系。例如:生产相同产品的工作站只能放在同一生产线上。
我们被要求提供“未来配置”的功能,我们发现很难为其设计解决方案。我们的想法是允许用户进行仅在明天生效的更改,或者让配置在午夜时删除。
我想知道是否已有产品实现此功能,以便我们可以从中学习,或者是否有最佳实践来解决此问题。
我们想到了几种解决方案,但所有这些解决方案似乎都需要大量的代码更改,而且似乎太脆弱了:
复制数据库(在我们的例子中是MySQL),有一个实例用于当前设置,一个用于明天。午夜“明天”DB将覆盖当前的DB。缺点是必须去修复几十页中的每一页,可以选择所需的数据库并在服务器端处理它。
保持一堆未来的操作在午夜运行。缺点是由于实体之间的质量依赖性,用户无法知道他的行为是否会在午夜运行时成功,因为系统在午夜的状态是未知的。
在数据库中添加start_time和end_time列的每个实体,并让每个对象有多行代表不同的时间配置。缺点是编辑数百个查询并尝试调整ActiveRecord及其关联以支持此状态。
解决此问题的最佳方法是什么?