rails activerecord对象在指定时间内的持久性



在rails 3应用程序中,我需要创建在指定时间内持久的对象。例如,假设我创建了一个(模型的)活动记录对象,但需要它只存在12个小时。活动记录对象需要在12小时后从数据库中自动销毁。删除不需要通过控制器进行,它可以直接在数据库上进行。实现这一目标的最佳方式是什么?可能有成千上万这样的对象在任何时间被创建和销毁,每个对象都需要在指定的时间销毁。

我环顾四周,发现了一些宝石;延迟的工作。anywhere更像是cron上的包装器,因此考虑到要管理的activerecord对象的数量,它不适合。我还没有调查使用后台流程的"延迟工作",但想得到一些关于可用选项的反馈。

提前谢谢。

为什么不每隔几分钟运行一次cron/any作业,查询数据库中created_at>12小时前创建的对象?因此,您可以通过查询而不是逐个删除所有对象。

every 5.minutes do
  Model.where(:created_at > 12.hours.ago).delete_all
end

如果你需要更准确地说,我可以想象为你的对象使用Redis密钥,并将密钥的过期时间设置为12小时,尽管你需要弄清楚如何连接Redis。

在任何情况下,都需要观察数据库才能发生这种情况,或者您有过期的密钥。

最新更新