如何确保回调订单?

时间:2017-10-05 18:45:38

标签: ruby-on-rails ruby callback ruby-on-rails-plugins

说,我有一个带有多个插件的RoR应用程序。这些插件中的每一个都在模型上实现了after_save回调。我需要再创建一个包含两个回调的插件,比如startfinish。如何确保以下回调执行顺序?

  • MyPlugin.start
  • OtherPlugin_1.after_save_1
  • OtherPlugin_1.after_save_X
  • OtherPlugin_X.after_save_1
  • ...
  • MyPlugin.finish

即。我应该在任何其他after_save之前调用我的回调,并在所有其他after_save回调完成执行之后立即调用。

1 个答案:

答案 0 :(得分:0)

这应该可以通过My prepend: true使用MyPlugin.start来实现,如下所示:

after_save :start, prepend: true

假设没有其他插件使用:prepend

关于MyPlugin.finish:唯一的选择(据我所知)是确保插件最后执行(例如,通过命名zzz)。