Sha256: e9ef1382973220ea97d80e663c758a3b0ab20d6a439a932af67d942ea5f3c7af

Contents?: true

Size: 1.14 KB

Versions: 2

Compression:

Stored size: 1.14 KB

Contents

# -*- coding: utf-8 -*-
#
# Сообщения от системы пользователю для отображения их через flash. Например:
#
#   :import_contacts - импортированы контакты
#   :import_events - импортированы мероприятия
#
# Сообщения посылаются так:
#
#   user.notice :import_contacts, :provider=>:facebook
#
# Тексты сообщений описываются в локали

class GritterNotice < ActiveRecord::Base
  belongs_to :owner, :polymorphic=>true

  scope :delivered, where("delivered_at is not nul").order('delivered_at')
  scope :fresh, where("delivered_at is null").order('created_at').limit(5)

  serialize :options, Hash

  before_validation :set_options
  validates_presence_of :owner, :message

  def fresh?
    delivered_at.blank?
  end

  def delivered?
    not fresh?
  end

  def destroy_after_deliver?
    true
  end

  def mark_as_delivered
    if destroy_after_deliver?
      destroy
    else
      update_attribute :delivered_at, Time.now
    end
  end

  private

  def set_options
    self.options={} unless self.options
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
gritter_notices-0.3.1 app/models/gritter_notice.rb
gritter_notices-0.2.0 app/models/gritter_notice.rb