Module: Gossiper::Concerns::Models::Notification

Extended by:
ActiveSupport::Concern
Included in:
Notification
Defined in:
lib/gossiper/concerns/models/notification.rb

Constant Summary collapse

STATUSES =
%w(pending delivered)

Instance Method Summary collapse

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(method, *args, &block) ⇒ Object



42
43
44
45
46
47
48
49
# File 'lib/gossiper/concerns/models/notification.rb', line 42

def method_missing(method, *args, &block)
  STATUSES.each do |status|
    if method.to_s == "#{status}?"
      return self.status == status
    end
  end
  super(method, *args, &block)
end

Instance Method Details

#configObject



38
39
40
# File 'lib/gossiper/concerns/models/notification.rb', line 38

def config
  ClassResolver.new.resolve(kind).constantize.new(self)
end

#dataObject



19
20
21
# File 'lib/gossiper/concerns/models/notification.rb', line 19

def data
  read_attribute(:data).presence || {}
end

#deliverObject



23
24
25
26
# File 'lib/gossiper/concerns/models/notification.rb', line 23

def deliver
  mail.deliver
  update_delivered_at!
end

#deliver!Object



28
29
30
31
# File 'lib/gossiper/concerns/models/notification.rb', line 28

def deliver!
  mail.deliver!
  update_delivered_at!
end

#kind=(value) ⇒ Object



33
34
35
36
# File 'lib/gossiper/concerns/models/notification.rb', line 33

def kind=(value)
  value = value.present? ? value.parameterize.underscore : nil
  write_attribute(:kind, value)
end

#statusObject



15
16
17
# File 'lib/gossiper/concerns/models/notification.rb', line 15

def status
  read_attribute(:status).presence || STATUSES.first
end