Class: ActiveRecord::VirtualEnumerations::Config

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

Instance Method Summary collapse

Constructor Details

#initializeConfig

Returns a new instance of Config.



35
36
37
# File 'lib/active_record/virtual_enumerations.rb', line 35

def initialize
  @enumeration_defs = {}
end

Instance Method Details

#[](arg) ⇒ Object



52
53
54
# File 'lib/active_record/virtual_enumerations.rb', line 52

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

#define(arg, options = {}, &synth_block) ⇒ Object



39
40
41
42
43
44
45
46
47
48
49
50
# File 'lib/active_record/virtual_enumerations.rb', line 39

def define(arg, options = {}, &synth_block)
  (arg.is_a?(Array) ? arg : [arg]).each do |class_name|
    camel_name = class_name.to_s.camelize
    raise ArgumentError, "ActiveRecord::VirtualEnumerations.define - invalid class_name argument (#{class_name.inspect})" if camel_name.blank?
    raise ArgumentError, "ActiveRecord::VirtualEnumerations.define - class_name already defined (#{camel_name})" if @enumeration_defs[camel_name.to_sym]
    options.assert_valid_keys(:table_name, :extends, :conditions, :order, :on_lookup_failure)
    enum_def = options.clone
    enum_def[:extends] ||= "ActiveRecord::Base"
    enum_def[:post_synth_block] = synth_block
    @enumeration_defs[camel_name.to_sym] = enum_def
  end
end