2014-02-19 54 views
1

我怎么能在sidekiq做那样的事情?sidekiq延迟两种方法

Gateway::AddUser.delay.new(6).call 

现在,Gateway::AddUser.delay.new(6)返回一个字符串,并call方法试图在其上运行。但我想打电话只是Gateway::AddUser.new(6).call延迟

回答

3

解决就像这样:

Gateway::AddUser.delay.perform(6) 

哪里perform方法是:

def self.perform(params) 
    new(params).call 
end 

只是改写2种方法1 =)

1

为什么你不只是用其他方法包装呢?

class User 
    def self.add_user_via_gateway(attributes) 
    Gateway::AddUser.new(attributes).call 
    end 
end 

User.delay.add_user_via_gatway(attributes) 

编辑:

如果你愿意,你也可以创建一个工人阶级。

class AddUserViaGatewayWorker 
    include Sidekiq::Worker 

    def perform(attributes) 
    Gateway::AddUser.new(attributes).call 
    end 
end 

AddUserViaGatewayWorker.perform_async(attributes) 
+0

我可以走这种方式,但它看起来有点复杂:我会让我的模特变胖 – asiniy

+0

为什么这会让你的模特变胖?无论如何,你可以把代码放在你喜欢的任何其他模块或类中。或者你可以创建一个工人类。 –

+0

模型不响应延迟动作,对吗?工人阶级看起来是完美的解 – asiniy