2014-03-24 24 views
1

我有一個使用activerecord生命週期回調的模型。我正在使用after_commit回調來執行需要主鍵在創建時運行的sidekiq作業。after_commit block當參數使用hashrocket語法時執行,但當它使用冒號語法時不執行

after_commit on: :create do 
    async_process 
end 

塊內部的代碼永遠不會運行。

然而,當我做

after_commit :on => :create do 
    async_process 
end 

的代碼運行正常。

據我所知,這兩條不同的線條應該用完全相同的方式解釋。我錯過了什麼?

我使用的是ruby 2.0.0p247,Rails 3.2.17。

+0

您確定您使用'on::create'而不是'on:create'嗎? –

+0

看起來應該運行良好。另外,你不需要do塊。你可以寫下after_commit:async_process,on::創建 – emcanes

+0

@ muistooshort是的,但很好的猜測。 emcanes與冒號語法一起工作,沒有do塊,並且帶有do塊的hashrocket語法。 – dfried

回答

0

它適用於我使用相同的RubyRails版本。或者,您可以嘗試使用另一種可接受的語法:

after_commit :async_process, on: :create 
+0

@dfried你有沒有發現這個奇怪的東西?你有沒有嘗試其他語法? – markets

+1

它使用替代語法,但仍然不能與我原來的應該是相同的,雖然。 – dfried

相關問題