Class: ActiveRecord::VirtualEnumerations::Config

Inherits:
Object
  • Object
show all
Defined in:
lib/active_record/virtual_enumerations.rb

Overview

Config class for VirtualEnumerations

Instance Method Summary collapse

Constructor Details

#initializeConfig

:nodoc:



146
147
148
# File 'lib/active_record/virtual_enumerations.rb', line 146

def initialize # :nodoc:
  @enumeration_defs = {}
end

Instance Method Details

#[](arg) ⇒ Object

Proxies lookups to @enumeration_defs



176
177
178
# File 'lib/active_record/virtual_enumerations.rb', line 176

def [](arg)
  @enumeration_defs[arg]
end

#define(*args, &block) ⇒ Object

Creates definition(s) for one or more enums.



151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
# File 'lib/active_record/virtual_enumerations.rb', line 151

def define(*args, &block)
  options = args.extract_options!
  args.compact!
  args.flatten!
  args.each do |class_name|
    camel_name = class_name.to_s.camelize
    if camel_name.blank?
      raise ArgumentError, "ActiveRecord::VirtualEnumerations.define - invalid class_name argument (#{class_name.inspect})"
    end
    if @enumeration_defs[camel_name.to_sym]
      raise ArgumentError, "ActiveRecord::VirtualEnumerations.define - class_name already defined (#{camel_name})"
    end
    options.assert_valid_keys(:table_name, :extends, :conditions, :order, :on_lookup_failure, :name_column, :alias_name)
    enum_def = options.clone
    enum_def[:extends] = if superclass = enum_def[:extends]
                           superclass.to_s.camelize
                         else
                           "ActiveRecord::Base"
                         end
    enum_def[:customizations_block] = block
    @enumeration_defs[camel_name.to_sym] = enum_def   
  end
end