Module: Mongoid::EnumMapper
- Extended by:
- ActiveSupport::Concern
- Defined in:
- lib/enum_mapper.rb,
lib/mongoid/enum_mapper/version.rb,
lib/mongoid/enum_mapper/define_enum.rb
Defined Under Namespace
Modules: ClassMethods
Constant Summary collapse
- VERSION =
"0.5.0"
Class Method Summary collapse
Instance Method Summary collapse
Class Method Details
.included(base) ⇒ Object
5 6 7 |
# File 'lib/mongoid/enum_mapper/define_enum.rb', line 5 def self.included(base) base.extend(ClassMethods) end |
Instance Method Details
#reload ⇒ Object
9 10 11 12 13 |
# File 'lib/mongoid/enum_mapper/define_enum.rb', line 9 def reload super reset_enum_mapping_cache self end |
#reset_enum_mapping_cache(enum_field: nil, key: nil) ⇒ Object
15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
# File 'lib/mongoid/enum_mapper/define_enum.rb', line 15 def reset_enum_mapping_cache(enum_field: nil, key: nil) if enum_field # Reset certain enum field enum_mapper = self.class.const_get(enum_field.to_s.upcase) key ||= enum_mapper.key(self[:"#{enum_field}"]) # If key not found, grep from current db value return self[enum_field] unless enum_mapper[key] instance_variable_set(:"@#{enum_field}", nil) self[enum_field] = enum_mapper[key] else # Reset all enum field self.class.instance_variable_get(:'@current_enums').each do |field| reset_enum_mapping_cache(enum_field: field) end end end |