我遇到从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中所做的那样?
答案 0 :(得分:2)
任何想法如何绕过它并让
byRecID
...
不,没办法做到这一点。 session[:test_password]
不是一个简单的实例方法。它从cookie中获取数据(默认情况下)。并且cookie在后台工作环境中是不可访问的。
后台工作人员的经验法则是:延迟方法必须在其参数中接收所需的所有数据。