Sha256: 381b36adf4e1f1aa64e3cc7909ce9f134e21709a1eb9198c6a24df13dd795175
Contents?: true
Size: 1.36 KB
Versions: 1
Compression:
Stored size: 1.36 KB
Contents
module Gossiper module Concerns module Models module Notification extend ActiveSupport::Concern STATUSES = %w(pending delivered) included do serialize :data, JSON validates :kind, presence: true belongs_to :user, polymorphic: true end def status read_attribute(:status).presence || STATUSES.first end def data read_attribute(:data).presence || {} end def deliver mail.deliver update_delivered_at! end def deliver! mail.deliver! update_delivered_at! end def kind=(value) value = value.present? ? value.parameterize.underscore : nil write_attribute(:kind, value) end def config ClassResolver.new.resolve(kind).constantize.new(self) end 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 protected def mail Gossiper::Mailer.mail_for(self) end def update_delivered_at! self.delivered_at = Time.now save! end end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
gossiper-0.3.8 | lib/gossiper/concerns/models/notification.rb |