随着时间的推移建模资源可用性与Rails中的异常

时间:2010-07-22 15:55:04

标签: ruby-on-rails database database-design calendar data-modeling

我正在努力使用Rails中可用的工具,宝石或插件来建模资源及其可用性。

基本上每个资源的每周(0,1,2,3,4,5,6)的典型可用性为0..24小时。然后会有一些例外需要考虑,例如假日或特殊事件应该否决一周中那天的默认值。

我可以想到两种广泛的方法(虽然我确信还有更多方法)。一个会在每个请求上查询数据库并测试逻辑以查看当时资源是否可用。随着系统的增长,这可能变得麻烦(耗时)。另一个会在每x(5?)min运行一个进程(cron?),以根据其可用性规则在每个资源上设置一个布尔值(AVAILABLE)。

这些是广泛的方法,可以想象,但是如何处理模型/类是我可以真正使用一些建议的地方。

有什么想法?经验?宝石/插件我应该知道吗?

1 个答案:

答案 0 :(得分:1)

不确定您的应用程序的适用性,但有一个非常好的Ruby gem,名为ice_cube,可以用来模拟重复的日期和时间。您可以为资源设置计划,指定其可用性规则和例外情况。可以将计划序列化为数据库,作为每个资源的YAML(例如在文本字段中)。

当您需要查看某个特定资源是否可用时,您只需将其计划反序列化,并询问ice_cube相关日期/时间是否与其规则相交。它也非常快速有效。