Sha256: 16e2f58f3d55a9e2f440e4fe5f8e73343722c45f730389225ba7cc62f5709f0c
Contents?: true
Size: 1.27 KB
Versions: 1
Compression:
Stored size: 1.27 KB
Contents
module Gossiper class Notification < ActiveRecord::Base STATUSES = %w(pending delivered) serialize :data, JSON validates :kind, presence: true belongs_to :user, polymorphic: true 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 begin klass = "Notifications::#{kind.classify}Notification" klass.constantize.new(self) rescue NameError klass = Gossiper.configuration.default_notification_config_class klass.constantize.new(self) end 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
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
gossiper-0.3.5 | app/models/gossiper/notification.rb |