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

时间:2016-01-14 22:45:57

标签: ruby-on-rails heroku devise scheduled-tasks rake-task

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

  • 检查用户是否已登录,并将其通知给管理员

    • 如果为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

提前致谢!

1 个答案:

答案 0 :(得分:1)

设置默认配置不允许您跟踪哪些用户在线和离线。帮助者global.jsoncurrent_user属于当前会话,仅在用户请求期间有效。由于rake任务中没有请求,因此它们没有用处。

您可以在数据库中添加一列来跟踪用户是已登录还是已注销,但此功能并未出现在设计中。