2011-04-20 11 views
1

だから私はこれをきれいにする方法を見つけようとしています。例を単純にしようとすると、オブジェクトがあると言うことができます。MyMailMeetingで、会議で2人の異なる電子メールを送信することを2回定義します。Delayed_job:定義時間

私のMyMailMeetingモデルでは、(自分の遅延ジョブクラスを持つのではなく)両方のメソッドを定義する必要がありますが、送信するタイミングをオブジェクト内で定義した時間を参照する必要があります。

def send_first 
    ... do stuff 
end 
handle_asynchronously :send_first, :run_at => Proc.new { send_first_time } 

問題はdocumentationによると、send_first_timeクラスメソッドである必要があり、私は、ユーザーが定義した回数を見ることができるように、それはインスタンスメソッドになりたいということです。

どうすればよいですか?私は第二の方法を使用して終了

Delayed::Job.enqueue(SendFirstJob.new, :run_at => send_first_time) 

答えて

0

:または私はちょうど2つの別々のDelayed_jobクラスを作成する必要があり、このような何かを行うのですか。私が望むほど時間に敏感ではありませんが。

send_first_timeをユーザー入力に基づく変数にする方法についての回答があれば、私はそれを正解として喜んで受け入れます。ありがとう。

2

私はhandle_asynchronouslyので、そのattributsのために手続きオブジェクトにオブジェクトを渡すことを信じる:

handle_asynchronously :send_first, :run_at => Proc.new { |obj| obj.send_first_time } 

あなたは常に独自の非同期ラッパーあなたの答えのための

def send_first_async(*args) 
    delay(:run_at => send_first_time).send_first(*args) 
end 
+0

ありがとうをロールバックすることができます。宝石のREADME/wikiの時間オプションを取ることの遅延の例はなく、この答えは、ugly-handle_asynchronouslyを使用する代わりに、将来タスクをスケジュールする短期間の方法を見つけ出すのに役立ちました。 – Salil

関連する問題