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

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_notifyObject



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

Returns:

  • (Boolean)


46
47
48
# File 'lib/lifesaver/notification/model_additions.rb', line 46

def needs_to_notify?
  notifiable_associations.any_to_notify?
end