如何执行回调订单?例如,您如何确保在Step 1
之前发生Step 2
:
after_save do
logger.info "Step 1"
end
after_save do
logger.info "Step 2"
end
我的实际例子涉及使用第三方宝石并确保它们在我自己的回调之前完成(它们在回调上工作)。我必须使用相同的回调(即不能使用before
和after
组合)。
谢谢!
答案 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时。