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 29 30 31 32 33 |
# 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? opts[:observed_attrs] = (self.column_names - (opts[:except] || [])) opts[:observed_attrs] = opts[:only] if opts[:only] 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], :observed_attrs => opts[:observed_attrs] model_klass.add_observer(observer) end |