我的数据库表中有一列名为eventdate
和eventtime
。
假设活动日期是2016年2月1日,时间是19:00。 (格林尼治标准时间)
我想拥有它以便在2016年2月1日到达晚上7点之后立即删除该事件(请记住,此表中有很多事件。)
我将如何实现这一目标?
答案 0 :(得分:1)
首先,我不确定为什么要为日期和时间保留单独的字段,而不是仅保留一个字段。我认为这会使SQL查询更快。
其次,正如我所理解的那样,你关心的是一排不可见的"在事件日期时间之后,我要做的是查询范围为where('event_datetime > ?', Time.now)
的表,这样您就不必担心立即删除行。
然后,正如您已经做的那样,将行删除移到背景中,无论需要多长时间,您的行都是"隐藏"反正。
答案 1 :(得分:0)
1)向名为:expired的事件添加范围,该事件返回符合您所描述条件的任何事件。编写范围测试。
2)添加一个服务对象,其作用是删除过期事件。不要忘记你的测试。
3)添加并安装随时随地的宝石。编辑config / schedule.rb以特定间隔运行服务对象。
4)部署。