File: app/models/status.rb

Overview
Module Structure
Class Hierarchy
Code

Overview

Module Structure

  module: <Toplevel Module>
  class: Status#1
inherits from
  Object ( Builtin-Module )
has properties
attribute: id [RW] #2
attribute: name [RW] #2
method: initialize / 1 #4
method: symbol #9
class method: [] / 1 #13
class method: find / 1 #17
class method: find_all #21
class method: selectable #25
class method: selectable_values #29

Class Hierarchy

Object ( Builtin-Module )
  Status    #1

Code

   1  class Status
   2    attr_accessor :id, :name
   3 
   4    def initialize(options = {})
   5      options = options.symbolize_keys
   6      @id, @name = options[:id], options[:name]
   7    end
   8    
   9    def symbol
  10      @name.to_s.downcase.intern
  11    end
  12    
  13    def self.[](value)
  14      @@statuses.find { |status| status.symbol == value.to_s.downcase.intern }
  15    end
  16    
  17    def self.find(id)
  18      @@statuses.find { |status| status.id.to_s == id.to_s }
  19    end
  20    
  21    def self.find_all
  22      @@statuses.dup
  23    end
  24    
  25    def self.selectable
  26      find_all - [self['Scheduled']]
  27    end
  28      
  29    def self.selectable_values
  30      self.selectable.map(&:name)
  31    end
  32    
  33    @@statuses = [
  34      Status.new(:id => 1,   :name => 'Draft'    ),
  35      Status.new(:id => 50,  :name => 'Reviewed' ),
  36      Status.new(:id => 90,  :name => 'Scheduled'),
  37      Status.new(:id => 100, :name => 'Published'),
  38      Status.new(:id => 101, :name => 'Hidden'   )
  39    ]
  40    
  41  end