在页面加载时调用方法

时间:2015-09-04 05:41:40

标签: ruby ruby-on-rails-4

我在控制器中保存了以下方法,可以根据预设的时间限制(即一周前创建的任何内容)自动删除项目。

def auto_del
    Item.where("created_at <= ?", Time.now - 7.days).destroy_all
end

调用此方法的最佳位置在哪里?如何在item.html.erb页面加载时调用它?

我尝试在应用程序控制器中的before_action和特定项目控制器中调用它,但没有运气。任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:1)

你有两个地方可以做。

  1. Item Controller index方法中调用此方法。

  2. 为此创建一个cron作业,该作业将安排在特定时间每天运行。

  3. 前 - 考虑sidekiq延迟工作,例如sidekiq

    在行动之前调用它是没用的,因为它会在每个无意义的动作之前调用,因为它将在第一次尝试中删除周记录。

答案 1 :(得分:1)

让cron作业在您的应用程序上命中一个端点并不理想。那不是你的终点所针对的!查看clockwork gem。它允许您从应用程序中安排任务。