1

我创建了一个基本上用于我们所有项目的引擎。

现在我要做的是为before_create这个引擎中的所有模型添加一个回调。

经过一番搜索,我发现观察者是要走的路。

所以,我创建了这个观察者:

# app/models/baco/auth/auth_observer

class Baco::Auth::AuthObserver < ActiveRecord::Observer

  def before_create( record )
    p record
  end

end

现在我需要将它添加到应用程序中,但是在我的引擎中当然没有 application.rb 这样的文件,所以我将它放在我的引擎中:

# lib/baco/auth/engine.rb

require 'rails'
require 'devise'

module Baco
  module Auth
    class Engine < Rails::Engine

      engine_name 'baco_auth'
      config.active_record.observers = :auth_observer

    end
  end
end

但是在启动服务器时出现以下错误:

.../.rvm/gems/ruby-1.9.3-p125/gems/activesupport-3.2.1/lib/active_support/inflector/methods.rb:229:in `block in constantize': uninitialized constant AuthObserver (NameError)
4

1 回答 1

2

在引擎中,而不是application.rb你应该使用lib/[engine_name]/engine.rb

此外,如果您在引擎中创建观察者,则需要为其命名。

于 2012-04-06T11:25:30.643 回答