Method: ActiveRecord::VirtualEnumerations::Config#define

Defined in:
lib/active_record/virtual_enumerations.rb

#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