如何在 rake 任务中使用设计助手?
How to use devise helpers in a rake task?
我的任务将执行以下操作:
检查用户是否登录,并通知管理员
如果为真 => 什么也不做
如果为 false => 向管理员发送电子邮件
我希望这个任务每小时执行一次(它将使用 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_user
和 user_signed_in?
与当前会话相关,并且仅在用户请求期间有效。由于 rake 任务中没有请求,因此它们没有用。
您可能会在数据库中添加一列来跟踪用户是登录还是注销,但设计中没有此功能。
我的任务将执行以下操作:
检查用户是否登录,并通知管理员
如果为真 => 什么也不做
如果为 false => 向管理员发送电子邮件
我希望这个任务每小时执行一次(它将使用 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_user
和 user_signed_in?
与当前会话相关,并且仅在用户请求期间有效。由于 rake 任务中没有请求,因此它们没有用。
您可能会在数据库中添加一列来跟踪用户是登录还是注销,但设计中没有此功能。