2010-09-29 5 views
26

que desea añadir un Observador auditor que realiza una acción after_create en cualquier momento durante 3 modelos (libros, personajes, autores) ...Rails 3 Observador - mirando para aprender cómo implementar un observador de múltiples modelos

Hace poco escuché hablar de la capacidad de Observer pero no puedo encontrar ninguna documentación sobre la capacidad. ¿Es compatible en Rails 3?

¿Cómo creo un Auditor Observer que hace algo after_create para 3 modelos?

Gracias

+8

No olvides agregar esto alrededor de la línea 25 de tu aplicación.rb 'config.active_record.observers =: auditor_observer' –

Respuesta

58

rieles observers son dulces, Puede observe varios modelos dentro de una única observador

En primer lugar, es necesario generar su observador:

rails g observer Auditor 

Luego, en su fresca El archivo auditor_observer.rb define los modelos que desea observe y luego agrega la devolución de llamada after_create.

class AuditorObserver < ActiveRecord::Observer 
    observe :model_foo, :model_bar, :model_baz 

    def after_create(record) 
    #do something with `record` 
    end 
end 

En application.rb añadir

config.active_record.observers = :auditor_observer 

y debería funcionar.

+0

Extraño, por alguna razón, no está funcionando. Agregué un registrador de depuración y no se está escribiendo nada. ¿Hay algún otro paso requerido para que el Observer actúe? – AnApprentice

+4

K resulta que debe ser "ActiveRecord :: Observer" y debe definirse en el archivo application.rb en el directorio config. – AnApprentice

+0

Sí, tienes razón, editando la respuesta. – jpemberthy

Cuestiones relacionadas