Observer classes respond to lifecycle callbacks to implement trigger-like behavior outside the original class. This is a great way to reduce the clutter that normally comes when the model class is burdened with functionality that doesn‘t pertain to the core responsibility of the class.
In my project,I have to track certain action (create and update) of user on particular model basically i am maintaining some kind of log, or audit trails.In my application eventlog model has attribute user and body.
class EventlogObserver < ActiveRecord::Observer observe :model1, :model2 def after_create(record) @eventlog = Eventlog.new @eventlog.body = record.class.to_S+“Created at”+Time.now @eventlog.save @event end
def after_update(record) @eventlog = Eventlog.new @eventlog.body = record.class.to_S+“Updated at”+Time.now @eventlog.save end end
This eventlog_observer.rb is stored in app/model
Now Configuration add following line in /config/environment.rb config.active_record.observers = :eventlog_observer
In rails there are various callbacks on which you trigger some common behaviour
- after_create
- after_update
- after_save
- after_destroy
- before_create
- before_update
- before_save
- before_destroy
and many more you can also refer from http://api.rubyonrails.org/classes/ActiveRecord/Callbacks.html
For further reference http://api.rubyonrails.org/classes/ActiveRecord/Observer.html