相同 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
我有一个包含 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