标签: ruby ruby-on-rails-4
我在控制器中保存了以下方法,可以根据预设的时间限制(即一周前创建的任何内容)自动删除项目。
def auto_del Item.where("created_at <= ?", Time.now - 7.days).destroy_all end
调用此方法的最佳位置在哪里?如何在item.html.erb页面加载时调用它?
我尝试在应用程序控制器中的before_action和特定项目控制器中调用它,但没有运气。任何帮助将不胜感激。
before_action
答案 0 :(得分:1)
你有两个地方可以做。
在Item Controller index方法中调用此方法。
Item Controller
index
为此创建一个cron作业,该作业将安排在特定时间每天运行。
前 - 考虑sidekiq延迟工作,例如sidekiq
在行动之前调用它是没用的,因为它会在每个无意义的动作之前调用,因为它将在第一次尝试中删除周记录。
答案 1 :(得分:1)
让cron作业在您的应用程序上命中一个端点并不理想。那不是你的终点所针对的!查看clockwork gem。它允许您从应用程序中安排任务。