我的任务将执行以下操作:
检查用户是否已登录,并将其通知给管理员
如果为true =>什么都不做
如果false =>发送电子邮件给管理员
我希望每小时执行一次此任务(将使用Heroku Scheduler附加程序进行安排)
这里的问题是您不能在您编写的任何rake文件中使用user_signed_in?
或current_user
。另外,我不能将任何这些值作为参数传递,因为它将从Heroku Scheduler,仪表板调用。
我的一些代码在这里:
LIB /任务/ 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
提前致谢!
答案 0 :(得分:1)
设置默认配置不允许您跟踪哪些用户在线和离线。帮助者global.json
和current_user
属于当前会话,仅在用户请求期间有效。由于rake任务中没有请求,因此它们没有用处。
您可以在数据库中添加一列来跟踪用户是已登录还是已注销,但此功能并未出现在设计中。