class ActiveRecord::VirtualEnumerations::Config

Config class for VirtualEnumerations

Public Instance Methods

[](arg) click to toggle source

Proxies lookups to @enumeration_defs

# File lib/active_record/virtual_enumerations.rb, line 174
def [](arg)
  @enumeration_defs[arg]
end
define(*args, &block) click to toggle source

Creates definition(s) for one or more enums.

# File lib/active_record/virtual_enumerations.rb, line 149
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