Sha256: 815a17ba978fecc2992719b26273926bd8aee467578005c6b71b6d708488e7ab

Contents?: true

Size: 1.42 KB

Versions: 24

Compression:

Stored size: 1.42 KB

Contents

module Readable
  
  extend ActiveSupport::Concern

  # Constants
  NEW = "new"
  UNREAD = "unread"
  READ = "read"
  ARCHIVED = "archived"
  REMOVED = "removed"
  
  STATUS = {"New" => NEW, "Unread" => UNREAD, "Read" => READ, "Archived" => ARCHIVED, "Removed" => REMOVED}
  STATUS_REVERSE = {NEW => "New", UNREAD => "Unread", READ => "Read",ARCHIVED => "Archive", REMOVED => "Trash"}
  STATUS_UI_CLASS = {NEW => "success", UNREAD => "info", READ => "default", ARCHIVED => "default", REMOVED => "danger"}

  included do

	  validates :status, :presence=> true, :inclusion => {:in => STATUS_REVERSE.keys, :presence_of => :status, :message => "%{value} is not a valid status" }
	  
    state_machine :status, initial: NEW do
      event :read do
	      transition [NEW, UNREAD] => READ
	    end
	    event :unread do
	      transition [READ, ARCHIVED, REMOVED] => UNREAD
	    end
	    event :remove do
	      transition [NEW, READ, UNREAD, ARCHIVED] => REMOVED
	    end
	    event :archive do
        transition [NEW, READ, UNREAD, REMOVED] => ARCHIVED
	    end
    end

    scope :new_ones, -> { where(status: NEW) }
    scope :read, -> { where(status: READ) }
	  scope :unread, -> { where(status: UNREAD) }
	  scope :removed, -> { where(status: REMOVED) }
	  scope :archived, -> { where(status: ARCHIVED) }

	  scope :status, lambda { |status| where("LOWER(status)='#{status}'") }
  end

  def display_status
    STATUS_REVERSE[self.status]
  end

end

Version data entries

24 entries across 24 versions & 1 rubygems

Version Path
kuppayam-0.2.12.pre.materialize app/models/concerns/readable.rb
kuppayam-0.2.11.pre.materialize app/models/concerns/readable.rb
kuppayam-0.2.10.pre.materialize app/models/concerns/readable.rb
kuppayam-0.2.9.pre.materialize app/models/concerns/readable.rb
kuppayam-0.2.8.pre.materialize app/models/concerns/readable.rb
kuppayam-0.2.7.pre.materialize app/models/concerns/readable.rb
kuppayam-0.2.6.pre.materialize app/models/concerns/readable.rb
kuppayam-0.2.5.pre.materialize app/models/concerns/readable.rb
kuppayam-0.2.4.pre.materialize app/models/concerns/readable.rb
kuppayam-0.2.3.pre.materialize app/models/concerns/readable.rb
kuppayam-0.2.2.pre.materialize app/models/concerns/readable.rb
kuppayam-0.2.1.pre.materialize app/models/concerns/readable.rb
kuppayam-0.2.0.pre.materialize app/models/concerns/readable.rb
kuppayam-0.1.39 app/models/concerns/readable.rb
kuppayam-0.1.38 app/models/concerns/readable.rb
kuppayam-0.1.37 app/models/concerns/readable.rb
kuppayam-0.1.36 app/models/concerns/readable.rb
kuppayam-0.1.35 app/models/concerns/readable.rb
kuppayam-0.1.34 app/models/concerns/readable.rb
kuppayam-0.1.33 app/models/concerns/readable.rb