2017-05-03 13 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