2014-02-19 104 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