Module: Minenum::Model::AccessorAdder
- Defined in:
- lib/minenum/model.rb
Overview
:nodoc:
Class Method Summary collapse
- .add(model_class, methods_module, reflections, reflection) ⇒ Object
- .add_enum_method(methods_module, reflections) ⇒ Object
- .add_getter(methods_module, name) ⇒ Object
- .add_setter(methods_module, name) ⇒ Object
- .add_singleton_method(model_class, reflection, name) ⇒ Object
Class Method Details
.add(model_class, methods_module, reflections, reflection) ⇒ Object
37 38 39 40 41 42 43 44 45 |
# File 'lib/minenum/model.rb', line 37 def add(model_class, methods_module, reflections, reflection) add_singleton_method(model_class, reflection, reflection.name) add_enum_method(methods_module, reflections) unless methods_module.method_defined?(:_minenum_enum) add_getter(methods_module, reflection.name) add_setter(methods_module, reflection.name) reflections[reflection.name] = reflection end |
.add_enum_method(methods_module, reflections) ⇒ Object
54 55 56 57 58 59 60 61 62 |
# File 'lib/minenum/model.rb', line 54 def add_enum_method(methods_module, reflections) methods_module.module_eval do define_method(:_minenum_enum) do |name| @_minenum_enum ||= {} @_minenum_enum[name.to_sym] ||= reflections[name.to_sym].build_enum(self) end private :_minenum_enum end end |
.add_getter(methods_module, name) ⇒ Object
65 66 67 68 69 70 71 |
# File 'lib/minenum/model.rb', line 65 def add_getter(methods_module, name) methods_module.module_eval <<~RUBY, __FILE__, __LINE__ + 1 def #{name} # def size _minenum_enum(:'#{name}') # _minenum_enum(:'size') end # end RUBY end |
.add_setter(methods_module, name) ⇒ Object
73 74 75 76 77 78 79 |
# File 'lib/minenum/model.rb', line 73 def add_setter(methods_module, name) methods_module.module_eval <<~RUBY, __FILE__, __LINE__ + 1 def #{name}=(value) # def size=(value) _minenum_enum(:'#{name}').value = value # _minenum_enum(:'size').value = value end # end RUBY end |
.add_singleton_method(model_class, reflection, name) ⇒ Object
48 49 50 51 52 |
# File 'lib/minenum/model.rb', line 48 def add_singleton_method(model_class, reflection, name) model_class.singleton_class.define_method(name) do reflection.enum_class end end |