Module: Lifesaver::Notification::ModelAdditions
- Defined in:
- lib/lifesaver/notification/model_additions.rb
Defined Under Namespace
Modules: ClassMethods
Class Method Summary collapse
Instance Method Summary collapse
- #associations_to_notify ⇒ Object
- #models_for_association(assoc) ⇒ Object
- #needs_to_notify? ⇒ Boolean
Class Method Details
.included(base) ⇒ Object
28 29 30 31 32 33 34 35 36 |
# File 'lib/lifesaver/notification/model_additions.rb', line 28 def self.included(base) base.class_attribute :notifiable_associations base.notifiable_associations = NotifiableAssociations.new base.delegate :notifiable_associations, to: :class base.class_attribute :dependent_associations base.dependent_associations = DependentAssociations.new(base) base.delegate :dependent_associations, to: :class base.extend(ClassMethods) end |
Instance Method Details
#associations_to_notify ⇒ Object
38 39 40 41 42 43 44 |
# File 'lib/lifesaver/notification/model_additions.rb', line 38 def associations_to_notify models = [] notifiable_associations.on_notify.each do |association| models |= models_for_association(association) end models end |
#models_for_association(assoc) ⇒ Object
50 51 52 53 54 55 56 57 58 59 60 61 62 63 |
# File 'lib/lifesaver/notification/model_additions.rb', line 50 def models_for_association(assoc) models = [] association = send(assoc) unless association.nil? if association.respond_to?(:each) association.each do |m| models << m end else models << association end end models end |
#needs_to_notify? ⇒ Boolean
46 47 48 |
# File 'lib/lifesaver/notification/model_additions.rb', line 46 def needs_to_notify? notifiable_associations.any_to_notify? end |