我在打电话找工作时得到No Method Error
。我不知道为什么。这是实际错误:
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_shop
是Shop
模型对象。 get_customers
在此工作之外按预期工作。我似乎无法让它在这项工作中发挥作用。
我也尝试过:
Shop.current_shop.get_customers.perform
我做错了什么?
答案 0 :(得分:0)
首先,更改perform
方法 - 在那里您只想执行某些操作,在您的情况下,您要在get_customers
对象上调用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)
答案 1 :(得分:0)
我忘记在末尾使用 Test
命名测试类,因此 perform_now
未定义。
(为未来的我写这个 :wave:)