Module: Dynamini::TypeHandler::ClassMethods
- Defined in:
- lib/dynamini/type_handler.rb
Instance Method Summary collapse
- #define_handled_getter(column, format_class, _options = {}) ⇒ Object
- #define_handled_setter(column, format_class) ⇒ Object
- #format_default(format_class) ⇒ Object
- #handle(column, format_class, options = {}) ⇒ Object
- #validate_handle(format, options) ⇒ Object
Instance Method Details
#define_handled_getter(column, format_class, _options = {}) ⇒ Object
41 42 43 44 45 46 47 48 |
# File 'lib/dynamini/type_handler.rb', line 41 def define_handled_getter(column, format_class, = {}) proc = GETTER_PROCS[format_class] fail 'Unsupported data type: ' + format_class.to_s if proc.nil? define_method(column) do read_attribute(column) end end |
#define_handled_setter(column, format_class) ⇒ Object
50 51 52 53 54 55 56 57 |
# File 'lib/dynamini/type_handler.rb', line 50 def define_handled_setter(column, format_class) method_name = (column.to_s + '=') proc = SETTER_PROCS[format_class] fail 'Unsupported data type: ' + format_class.to_s if proc.nil? define_method(method_name) do |value| write_attribute(column, value) end end |
#format_default(format_class) ⇒ Object
59 60 61 62 63 64 65 66 |
# File 'lib/dynamini/type_handler.rb', line 59 def format_default(format_class) case format_class when :array [] when :set Set.new end end |
#handle(column, format_class, options = {}) ⇒ Object
29 30 31 32 33 34 35 36 37 38 39 |
# File 'lib/dynamini/type_handler.rb', line 29 def handle(column, format_class, = {}) validate_handle(format_class, ) [:default] ||= format_default(format_class) [:default] ||= Set.new if format_class == :set self.handles = self.handles.merge(column => { format: format_class, options: }) define_handled_getter(column, format_class, ) define_handled_setter(column, format_class) end |
#validate_handle(format, options) ⇒ Object
68 69 70 71 72 73 74 |
# File 'lib/dynamini/type_handler.rb', line 68 def validate_handle(format, ) if format == :set if [:of] && [:set, :array].include?([:of]) raise ArgumentError, 'Invalid handle: cannot store non-primitive datatypes within a set.' end end end |