相同 Active Record 回调的执行顺序

Order of execution for identical Active Record callbacks

我有一个包含 5 个 after_create 回调的模型。这些回调是从上到下执行的吗?如果不是,执行顺序是什么?

我知道文档列出了每个回调方法的优先级,但他们没有说明相同类型的多个回调的执行顺序。

是的,相同类型的回调正在从上到下执行 - 您可以轻松地自己检查它,而无需深入研究 ActiveRecord 代码或搜索任何文档,例如这样:

class City < ActiveRecord::Base
  after_create -> { log(1) }
  after_create -> { log(2) }
  after_create -> { log(3) }

  private

  def log(s)
    File.open("/tmp/logger.txt", "a") { |f| f.puts s }
  end

end

现在,如果您创建 City 并检查文件,输出将始终是

1
2
3