【发布时间】:2014-03-24 19:47:13
【问题描述】:
我有一个模型大量使用 activerecord 生命周期回调。我正在使用 after_commit 回调来执行需要主键才能在创建时运行的 sidekiq 作业。
after_commit on: :create do
async_process
end
块内的代码永远不会运行。
但是,当我这样做时
after_commit :on => :create do
async_process
end
代码运行良好。
据我了解,这两条不同的行应该以完全相同的方式解释。我错过了什么?
我正在使用 ruby 2.0.0p247,Rails 3.2.17。
【问题讨论】:
-
您确定您使用的是
on: :create而不是on: create? -
看起来应该可以正常运行。此外,您不需要 do 块。你可以在 after_commit :async_process, on: :create 上写
-
@muistooshort 是的,但猜对了。 emcanes 它适用于没有 do 块的冒号语法,以及带有 do 块的 hashrocket 语法。
标签: ruby-on-rails ruby activerecord ruby-2.0 hashrocket