Module: ManagedEnum::HasManagedEnum::ClassMethods

Defined in:
lib/managed_enum/has_managed_enum.rb

Instance Method Summary collapse

Instance Method Details

#has_managed_enum(attribute, possible_keyvalues) ⇒ Object



10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# File 'lib/managed_enum/has_managed_enum.rb', line 10

def has_managed_enum(attribute, possible_keyvalues)
  if possible_keyvalues.is_a? Array
    possible_keyvalues.each do |possible_keyvalue|
      ManagedEnum::HasManagedEnum.define_instance_methods_for attribute, possible_keyvalue, possible_keyvalue
      define_singleton_method possible_keyvalue.upcase do
        possible_keyvalue
      end
      scope "#{attribute}_#{possible_keyvalue}".intern, -> {where(attribute.intern => possible_keyvalue)}
    end
    define_singleton_method "#{attribute}_possible_keyvalues" do
      possible_keyvalues
    end
  elsif possible_keyvalues.is_a? Hash
    possible_keyvalues.each do |possible_keyvalue, possible_value|
      ManagedEnum::HasManagedEnum.define_instance_methods_for attribute, possible_keyvalue, possible_value
      define_singleton_method possible_keyvalue.upcase do
        possible_value
      end
      scope "#{attribute}_#{possible_keyvalue}".intern, -> {where(attribute.intern => possible_value)}
    end
    define_singleton_method "#{attribute}_possible_keyvalues" do
      possible_keyvalues
    end
  end
end