module EnumRecords::ActiveRecord::ClassMethods
Public Class Methods
define_enums(*args, &block)
click to toggle source
define class methods
# File lib/enum_records.rb, line 25 def self.define_enums *args, &block self._enums[:globalized] = self.respond_to?(:translations_table_name) EnumRecords::Definer.new self, &block end
enum(key)
click to toggle source
# File lib/enum_records.rb, line 34 def self.enum(key) self.send "find_by_#{self._enums[:column_name]}", key end
enums()
click to toggle source
# File lib/enum_records.rb, line 30 def self.enums self.where(self._enums[:column_name].to_sym => self._enums[:definitions].keys) end
Public Instance Methods
acts_as_enum(enum_column_name = 'enum_key')
click to toggle source
# File lib/enum_records.rb, line 12 def acts_as_enum(enum_column_name = 'enum_key') self.class_eval do # first cehck for enum column name existance raise ArgumentError, "Enum column #{enum_column_name} doesn't exsist in the table" unless self.columns_hash.keys.include?(enum_column_name) # stores all the names for named records (and their optoins) that are defined in the model. self.class_attribute :_enums self._enums = { :definitions => {}, :column_name => enum_column_name } #define class methods def self.define_enums *args, &block self._enums[:globalized] = self.respond_to?(:translations_table_name) EnumRecords::Definer.new self, &block end def self.enums self.where(self._enums[:column_name].to_sym => self._enums[:definitions].keys) end def self.enum(key) self.send "find_by_#{self._enums[:column_name]}", key end end end