Module: Mongoid::EnumMapper::ClassMethods
- Defined in:
- lib/mongoid/enum_mapper/define_enum.rb
Instance Method Summary collapse
- #define_enum(enum_field, enum_mapping = {}) ⇒ Object
- #set_current_enum_fields(name) ⇒ Object
- #set_enum_mapping_constant(name, value) ⇒ Object
Instance Method Details
#define_enum(enum_field, enum_mapping = {}) ⇒ Object
32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
# File 'lib/mongoid/enum_mapper/define_enum.rb', line 32 def define_enum(enum_field, enum_mapping = {}) field :"#{enum_field}", type: Integer, default: 0 set_enum_mapping_constant(enum_field, enum_mapping) set_current_enum_fields(enum_field) enum_value = :"@#{enum_field}" define_method(enum_field) do instance_variable_get(enum_value) || instance_variable_set(enum_value, enum_mapping.find { |_, value| value == self[enum_field] }.try(:[], 0)) end define_method(:"#{enum_field}=") do |key| reset_enum_mapping_cache(enum_field: enum_field, key: key) end end |
#set_current_enum_fields(name) ⇒ Object
54 55 56 57 |
# File 'lib/mongoid/enum_mapper/define_enum.rb', line 54 def set_current_enum_fields(name) @current_enums ||= [] @current_enums << name.to_s end |
#set_enum_mapping_constant(name, value) ⇒ Object
49 50 51 52 |
# File 'lib/mongoid/enum_mapper/define_enum.rb', line 49 def set_enum_mapping_constant(name, value) const_name = name.to_s.upcase const_set(const_name, value.freeze) end |