如何在 rake 任务中使用设计助手?

How to use devise helpers in a rake task?

我的任务将执行以下操作:

我希望这个任务每小时执行一次(它将使用 Heroku Scheduler 插件进行调度)

这里的问题是您不能在您编写的任何 rake 文件中使用 user_signed_in?current_user。此外,我无法将这些值中的任何一个作为参数传递,因为它将从 Heroku 调度程序、仪表板调用。

我的一些代码在这里:

lib/tasks/scheduler.rake

task :send_notification => :environment do
  if user_signed_in?
    puts "No need to email"
  else
    puts "Sending email"
    u=User.find(132)   #get an admin user
    ModelMailer.time_notification(u).deliver
  end
end

错误:

rake aborted!
NoMethodError: undefined method `user_signed_in?' for main:Object

提前致谢!

默认配置的设备不允许您跟踪哪些用户在线和离线。助手 current_useruser_signed_in? 与当前会话相关,并且仅在用户请求期间有效。由于 rake 任务中没有请求,因此它们没有用。

您可能会在数据库中添加一列来跟踪用户是登录还是注销,但设计中没有此功能。