2017-02-15 12 views
0

self.methodの外部からアプリケーションデータを取得する際に問題があります。delayed_jobはインスタンスのメソッドと変数を渡しますか?

Model.delay.methodを使用するには、メソッドがクラス1でなければなりません。

私は本当に好きです(メソッドを呼び出すときに入力パラメータを保存するなど)、必要なのはメソッドの外部から変数を取得することだけです。

例: ボタンをクリックしてタイマーを開始します。

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](最新の情報を渡す必要があります)は、タイマが開始した時刻(古いもの)と終了時刻(新しいもの)とを比較しているため、最新の情報を渡す必要があります。 )私はself.methodでやったように?

答えて

2

ことをバイパスしsession[:test_password]聞かせする方法任意のアイデア...

いや、それを行うための方法はありません。 sessionは単純なインスタンスメソッドではありません。 Cookieからデータを取得します(デフォルト)。バックグラウンドの作業者のコンテキストではクッキーにアクセスできません。

バックグラウンドワーカーにとっては、遅延メソッドは、必要なすべてのデータをパラメータで受け取る必要があります。

+0

他のインスタンスメソッドにアクセスできますか?私はクラスメソッドを作ることができます(タイマーの後にパラメータを渡す)は、インスタントメソッドに呼び出して、それを呼び出します。それは理にかなっていますか? – Kappa

+0

どのクラスのインスタンスを取得することができますか? –

+0

クラスメソッド内のインスタンスメソッドを呼び出します。私はいくつかのことを読んだが、私はそれをすることができないようだ。 – Kappa

関連する問題