Module: RubyEnum::ActiveRecord::AttrEnum::ClassMethods
- Defined in:
- lib/ruby_enum/active_record.rb
Instance Method Summary collapse
Instance Method Details
#_define_attr_setter_for(name) ⇒ Object
46 47 48 49 50 51 52 53 54 55 56 57 |
# File 'lib/ruby_enum/active_record.rb', line 46 def _define_attr_setter_for(name) define_method "#{name}=" do |new_value| if new_value.present? && !new_value.is_a?(RubyEnum) enum_class_name = self.class.attr_enums[name][:class_name] raise "You are trying to assign a `#{new_value.class.name}` value " \ "to enumeration attribute `#{name}` which is not supported. " \ "You must use `#{enum_class_name}` values instead." end super(new_value.try(:value)) end end |
#attr_enum(name, opts = {}) ⇒ Object
10 11 12 13 14 |
# File 'lib/ruby_enum/active_record.rb', line 10 def attr_enum(name, opts = {}) _create_attr_descriptor_for(name, opts) _define_attr_getter_for name _define_attr_setter_for name end |
#attr_enums ⇒ Object
16 17 18 |
# File 'lib/ruby_enum/active_record.rb', line 16 def attr_enums @_attr_enums ||= {} end |