Method: Minfraud::Enum::ClassMethods#enum_accessor
- Defined in:
- lib/minfraud/enum.rb
#enum_accessor(attribute, assignable_values) ⇒ nil
Create a set of methods for enum-like behavior of the attribute.
28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
# File 'lib/minfraud/enum.rb', line 28 def enum_accessor(attribute, assignable_values) mapping[attribute] = assignable_values.map(&:intern) self.class.instance_eval do define_method("#{attribute}_values") { mapping[attribute] } end class_eval do define_method(attribute.to_s) { instance_variable_get("@#{attribute}") } define_method "#{attribute}=" do |value| raise NotEnumValueError, 'Value is not permitted' if value && !self.class.mapping[attribute].include?(value.intern) instance_variable_set("@#{attribute}", value ? value.intern : nil) end end nil end |