我将一些代码移动到rails引擎后遇到了问题。之前,模型文件order.rb和一些自定义回调文件放在主app文件夹中,如:
MyProject
|- app
|- models
| |- order.rb
|
|- callbacks
|- order_callback.rb
文件内容为:
# order.rb
class Order < ActiveRecord::Base
include OrderCallback
end
# order_callback.rb
module OrderCallback
extend ActiveSupport::Concern
included do
p '-------------- included ----------------'
before_create :set_default_values
end
def set_default_values
p '------------- set default values ------------'
end
end
我将app / callbacks dir添加到autoload_paths中,一切正常,两条迹线都打印出来。
将这些代码移动到rails引擎后,问题就出现了。我将app / callbacks添加到引擎config.autoload_paths,并且可以看到第一条跟踪,这意味着包含了回调模块,但是在创建订单时我无法获得第二条跟踪。
我试图将回调移动为观察者,它运行正常。但出于某种原因,我不希望它成为观察者。
有谁知道原因?谢谢!