基本的にすべてのプロジェクトで使用されるエンジンを作成しました。
ここでやりたいことは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)