强制执行订单到Rails回调

时间:2010-12-08 21:18:04

标签: ruby-on-rails

如何执行回调订单?例如,您如何确保在Step 1之前发生Step 2

after_save do
  logger.info "Step 1"
end

after_save do
  logger.info "Step 2"
end

我的实际例子涉及使用第三方宝石并确保它们在我自己的回调之前完成(它们在回调上工作)。我必须使用相同的回调(即不能使用beforeafter组合)。

谢谢!

1 个答案:

答案 0 :(得分:17)

如果使用类级回调,则按照定义的顺序调用它们。

class Foo < ActiveRecord::Base

  after_save :step1
  after_save :step2

private

  def step1
    # stuff
  end

  def step2
    # stuff
  end
end

对于第三方gem,它取决于你如何与gem进行交互,但是它们首先会被调用,因为它们是先加载的。

我不建议使用def after_save样式,特别是在处理第三方gem时。