delayed_job传递实例方法&变量?

时间:2017-02-15 17:29:57

标签: ruby-on-rails ruby background-process delayed-job

我遇到从self.method以外获取应用程序数据的问题。

要使用模型.delay.method,该方法必须是第一类。

我真的很喜欢它,它可以满足我的需求(比如在调用方法时保存输入参数),但我需要做的是从方法外部获取变量。

例如: 用户单击按钮并启动计时器。

QuizzesController.delay(run_at: @quiz.time_limit.minutes.from_now).form_timeout(session[:user_id],session[:test_password])

方法form_timeout如下所示:

def self.form_timeout(id, test_password)
  if test_password == session[:test_password]
    Score.create(user_id: id, name: test_password, points: -1) 
    session.delete(:test_password)
  end
end

当我尝试这样做时,我收到错误“未定义的方法会话”,这意味着在使用self.method时我无法访问该数据。

任何想法如何绕过它并让session[:test_password](会话必须传递最新的信息,因为我比较计时器启动时的session[:test_password](旧的)和时间当它结束时(新的))就像我在self.method中所做的那样?

1 个答案:

答案 0 :(得分:2)

  

任何想法如何绕过它并让byRecID ...

不,没办法做到这一点。 session[:test_password]不是一个简单的实例方法。它从cookie中获取数据(默认情况下)。并且cookie在后台工作环境中是不可访问的。

后台工作人员的经验法则是:延迟方法必须在其参数中接收所需的所有数据。