Module: Mongoid::EnumMapper::ClassMethods
- Defined in:
- lib/mongoid/enum_mapper/define_enum.rb
Instance Attribute Summary collapse
-
#current_enums ⇒ Object
readonly
Returns the value of attribute current_enums.
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 Attribute Details
#current_enums ⇒ Object (readonly)
Returns the value of attribute current_enums.
32 33 34 |
# File 'lib/mongoid/enum_mapper/define_enum.rb', line 32 def current_enums @current_enums end |
Instance Method Details
#define_enum(enum_field, enum_mapping = {}) ⇒ Object
34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
# File 'lib/mongoid/enum_mapper/define_enum.rb', line 34 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
57 58 59 60 |
# File 'lib/mongoid/enum_mapper/define_enum.rb', line 57 def set_current_enum_fields(name) @current_enums ||= [] @current_enums << name.to_s end |
#set_enum_mapping_constant(name, value) ⇒ Object
52 53 54 55 |
# File 'lib/mongoid/enum_mapper/define_enum.rb', line 52 def set_enum_mapping_constant(name, value) const_name = name.to_s.upcase const_set(const_name, value.freeze) end |