class MongoModel::Observer

Protected Instance Methods

add_observer!(klass) click to toggle source
Calls superclass method
# File lib/mongomodel/concerns/observing.rb, line 14
def add_observer!(klass)
  super
  define_callbacks(klass)
end
define_callbacks(klass) click to toggle source
# File lib/mongomodel/concerns/observing.rb, line 19
def define_callbacks(klass)
  observer = self
  observer_name = observer.class.name.underscore.gsub('/', '__')

  MongoModel::Callbacks::CALLBACKS.each do |callback|
    next unless respond_to?(callback)
    callback_meth = :"_notify_#{observer_name}_for_#{callback}"
    unless klass.respond_to?(callback_meth)
      klass.send(:define_method, callback_meth) do |&block|
        observer.update(callback, self, &block)
      end
      klass.send(callback, callback_meth)
    end
  end
end
observed_classes() click to toggle source
Calls superclass method
# File lib/mongomodel/concerns/observing.rb, line 9
def observed_classes
  klasses = super
  klasses + klasses.map { |klass| klass.descendants }.flatten
end