当前位置:  开发笔记 > 编程语言 > 正文

Rails如何在记录三个月后运行方法?

如何解决《Rails如何在记录三个月后运行方法?》经验,为你挑选了1个好方法。

基本上我想要做的是删除一个文件和一个记录(其中包含文件路径)当记录是三个月大,该文件是通过Carrierwave上传的.

这有点我删除记录和文件的想法.

 # Code for deleteing PDF files (receipts) every 90 days
  def auto_delete_receipts
    #get user id from params or as a method parameter
    user = params[:id]

    user.receipts.each do |receipt|
      #check if receipt is three months old
        receipt.remove_receiptFile!
        receipt.save
      #end
    end
  end

所以我想知道我应该在哪里找到我的方法以及如何在每次记录三个月之后自动运行它,以便删除它.

谢谢阅读.



1> max..:

你是从错误的角度看待它.而不是创建一个将在三个月后触发的回调,而是创建一个定期运行的任务,并修剪早于某个年龄的记录.

反过来做这件事并不是非常有效,因为你需要跟踪所有这些回调应该被触发的时间,你必须在每个记录的基础上进行.

第一步是创建一个rake任务:

namespace :things do
  desc "Removes records older than 3 months"
  task :prune => :environment do
    puts "Removing things older than 3 months"
    destroyed = Thing.where("created_at < ?", 3.months.ago).destroy_all
    puts "{destroyed.length} records deleted."
  end
end

whenever如果要部署到支持cron的服务器,则注释中提到的gem是安排此方法的好方法.在Heroku上,您可以使用Scheduler而不是插件.

推荐阅读
低调pasta_730
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有