相同Active Record回调的执行顺序

时间:2016-02-02 22:19:08

标签: ruby-on-rails-3 activerecord

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

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

1 个答案:

答案 0 :(得分:2)

是的,相同类型的回调正在从上到下执行 - 您可以轻松地自行检查它,而无需深入研究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