当日期字段超过时间时,Rails会删除行。现在

时间:2016-01-13 19:35:37

标签: ruby-on-rails

我的数据库表中有一列名为eventdateeventtime

假设活动日期是2016年2月1日,时间是19:00。 (格林尼治标准时间)

我想拥有它以便在2016年2月1日到达晚上7点之后立即删除该事件(请记住,此表中有很多事件。)

我将如何实现这一目标?

2 个答案:

答案 0 :(得分:1)

首先,我不确定为什么要为日期和时间保留单独的字段,而不是仅保留一个字段。我认为这会使SQL查询更快。

其次,正如我所理解的那样,你关心的是一排不可见的"在事件日期时间之后,我要做的是查询范围为where('event_datetime > ?', Time.now)的表,这样您就不必担心立即删除行。 然后,正如您已经做的那样,将行删除移到背景中,无论需要多长时间,您的行都是"隐藏"反正。

答案 1 :(得分:0)

1)向名为:expired的事件添加范围,该事件返回符合您所描述条件的任何事件。编写范围测试。

2)添加一个服务对象,其作用是删除过期事件。不要忘记你的测试。

3)添加并安装随时随地的宝石。编辑config / schedule.rb以特定间隔运行服务对象。

4)部署。