Module: ManagedEnum::HasManagedEnum

Extended by:
ActiveSupport::Concern
Defined in:
lib/managed_enum/has_managed_enum.rb

Defined Under Namespace

Modules: ClassMethods

Class Method Summary collapse

Class Method Details

.define_instance_methods_for(attribute, possible_keyvalue, possible_value) ⇒ Object



37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
# File 'lib/managed_enum/has_managed_enum.rb', line 37

def self.define_instance_methods_for(attribute, possible_keyvalue, possible_value)
  define_method "#{possible_keyvalue}?" do
    self.send(attribute) == possible_value
  end
  
  define_method "make_#{possible_keyvalue}" do
    self.send "#{attribute}=", possible_value
  end
  define_method "#{attribute}_as_string" do
    current_value = self.send(attribute)
    all_values = self.class.send("#{attribute}_possible_keyvalues")
    to_return = ''
    if all_values.is_a?(Hash)
      all_values.each do |some_key, some_value|
        if some_value == current_value
          to_return = some_key.to_s
          break
        end
      end
    elsif all_values.is_a?(Array)
      to_return = current_value
    end
    to_return
  end
end