使用sidekiq删除一年后的日志数据



我是sidekiq的新手,我想在一年后从我的模型AdminLog中删除数据。我有一个created_at字段,所以我只是在想如果我使用下面的方法就足够了?我想我应该在某个地方初始化它,因为 sidekiq 怎么知道什么时候触发它?

class AdminLogRemoverWorker
include Sidekiq::Worker
def perform
expired_logs = AdminLog.where('created_at >= ?', 1.year.ago)
expired_logs.destroy_all
end
end

编辑:

我想让 sidekiq 自动执行此操作,因此它应该能够每天查找此类数据并能够每天删除这些数据。

您拥有的将删除所有比1.year.ago更新的记录,相当确定您希望created_at < ?>=

此外,除非你有一些回调需要运行,否则你可能想使用delete_all而不是destroy_all- 它会快得多。

更新

抱歉,忘记了主要部分,您还需要在其中放置一些代码以将这项工作重新安排到第二天(文档在这里(。 所以:

def perform
self.class.perform_at 1.day.from_now.change hour: 1
#... rest of your stuff
end

那是明天凌晨 1 点,将时间调整到适合您的时间。

最新更新