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 に答える