Rails after_commit?

gas*_*ard 7 transactions ruby-on-rails

有人after_commit在Rails中实现了一个钩子吗?在更新/创建/等提交后,我不是在寻找基于模型的模型,我希望能够动态定义仅在当前(最顶层)事务通过时才会执行的块:

def remove_file
  current_transaction.after_commit do
    FileUtils.rm(file_path)
  end
end
Run Code Online (Sandbox Code Playgroud)

不知道是否已经实现了,如果它将在rails 3.0中?

sev*_*rin 6

Rails 3提供after_commit/after_rollback回调:https://github.com/rails/rails/commit/da840d13da865331297d5287391231b1ed39721b

在Rails 1和2中,您可以使用此gem获得相同的功能:https://github.com/freelancing-god/after_commit


Jos*_*man 2

在 Rails 3.0 中您不会看到after_commit,至少现在还不会。您可以应用补丁并查看它是否得到核心团队的批准,但我怀疑它会。此功能在 Rails 核心之外的插件中仍然具有更多功能。

你可以试试这个插件:

http://github.com/GUI/after_commit