Module: Observational
- Defined in:
- lib/observational.rb,
lib/observational/observer.rb,
lib/observational/observable.rb,
lib/observational/active_record_observers.rb
Defined Under Namespace
Modules: ActiveRecordObservers, Observable Classes: Observer
Instance Method Summary collapse
-
#observes(model_name, opts = {}) ⇒ Object
Declares an observer.
Instance Method Details
#observes(model_name, opts = {}) ⇒ Object
Declares an observer
16 17 18 19 20 21 22 23 24 25 26 27 28 |
# File 'lib/observational.rb', line 16 def observes(model_name, opts = {}) opts.assert_valid_keys :with, :invokes, :on, :before, :after opts[:on] = :"before_#{opts[:before]}" unless opts[:before].nil? opts[:on] = :"after_#{opts[:after]}" unless opts[:after].nil? model_klass = model_name.to_s.classify.constantize model_klass.send(:include, Observable) unless model_klass.include?(Observable) observer = Observational::Observer.new :method => opts[:invokes], :parameters => opts[:with].nil? ? nil : [*opts[:with]], :subscriber => self, :actions => opts[:on] model_klass.add_observer(observer) end |