2
我正在尝试在我的Rails引擎中创建一个观察者,它将在我的主应用程序中观察模型。Rails引擎中的观察者
我的观察者(在应用程序/模型/ my_engine/my_observer.rb)是,
module MyEngine
class MyObserver < ActiveRecord::Observer
observe AppModel
def after_create
# code to run when callback is observed
end
end
end
为了注册观察者,我修改我的引擎(在LIB/my_engine/engine.rb)是,
module MyEngine
class Engine < ::Rails::Engine
isolate_namespace MyEngine
config.active_record.observers = MyEngine::MyObserver
end
end
然而,当我试图启动我得到以下错误的服务器,
... in `<class:Engine>': uninitialized constant MyEngine::MyObserver (NameError)
然而,这为e xactly与接受的答案相同Using an observer within an Engine
我在做错了命名空间吗?这是我想要实现的最好方法吗?
请注意,如果您在所有地方使用.observer =,观察者的最后一个列表是“胜利”,其余的将被覆盖。使用'config.active_record.observers || = [];而不是使用config.active_record.observers << MyEngine :: MyObserver'' – apeiros