2017-05-03 9 views
0

私の仕事を呼び出すときにNo Method Errorが得られます。どうしてか分かりません。これは、実際のエラーです:ActiveJobでメソッドを呼び出すと、

NoMethodError: undefined method `get_customers' for # 
<GetCustomersJob:0x007f15280e4270> 

私はActiveJobを学習し、超簡単です私の最初のジョブを作成し、そして私のShopモデルに定義されたメソッドを呼び出しています。ジョブは次のようになります。

class GetCustomersJob < ActiveJob::Base 
    queue_as :default 

    def perform(current_shop) 
    current_shop.get_customers.perform 
    end 
end 

get_customersうまく私の店のモデルに定義され、current_shopShopモデルオブジェクトです。 get_customersは、このジョブの外では正常に動作します。私はちょうどそれがこの仕事の中で機能するように見えることができません。

私も試してみました:

Shop.current_shop.get_customers.perform 

は私が間違って何をしたのですか?

答えて

0

最初に、メソッドを変更します。ここでは何かを実行したい場合はをcurrent_shopオブジェクトにコールします。そうする。

class GetCustomersJob < ActiveJob::Base 
    queue_as :default 

    def perform(current_shop) 
    current_shop.get_customers # removed .perform 
    end 
end 

その後、ジョブを呼び出すとします。あなたが仕事のクラス名を書くと、すぐにジョブを実行するかperform_nowを使用することを実行します。

GetCustomersJob.perform_now(Shop.current_shop) 

またはperform_laterは、後のジョブをキューに:

GetCustomersJob.perform_later(Shop.current_shop) 
+0

いやは、まだ正確に同じエラーを取得。私はOPを更新しましたが、 'get_customers'という言葉は' job'に定義されていません。実際のところ、それはモデル上で定義されています。そして私は 'Shop'オブジェクトを渡して作業します。したがって、私の混乱 – ToddT

+0

@ToddTエラーの原因を見つけたら、私は非常に興味がありますか? –

+0

それは私のコードがうまくいたことになってしまった、私はサイドキーを再起動していないので、私のコードが変更されていませんでした..レッスンが学んだ!助けてくれてありがとう – ToddT

関連する問題