无法触发Rails引擎中的自定义回调

时间:2012-11-02 10:20:21

标签: ruby-on-rails ruby-on-rails-3 callback rails-engines

我将一些代码移动到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,并且可以看到第一条跟踪,这意味着包含了回调模块,但是在创建订单时我无法获得第二条跟踪。

我试图将回调移动为观察者,它运行正常。但出于某种原因,我不希望它成为观察者。

有谁知道原因?谢谢!

0 个答案:

没有答案