Changes from extracting bits to ActiveModel * ActiveModel::Observer#add_observer! It has a custom hook to define after_find that should really be in a ActiveRecord::Observer subclass: def add_observer!(klass) klass.add_observer(self) klass.class_eval 'def after_find() end' unless klass.respond_to?(:after_find) end