Module: Familia::Features::SafeDump::ClassMethods
- Included in:
- Familia::Features::SafeDump
- Defined in:
- lib/familia/features/safe_dump.rb
Overview
SafeDump::ClassMethods
These methods become available on the model class
Instance Method Summary collapse
-
#safe_dump_field(field_name, callable = nil) ⇒ Object
Define a single safe dump field.
-
#safe_dump_field_map ⇒ Object
Returns the field map used for dumping.
-
#safe_dump_field_names ⇒ Object
Returns an array of safe dump field names in the order they were defined.
-
#safe_dump_fields(*fields) ⇒ Object
Define multiple safe dump fields at once.
-
#set_safe_dump_fields(*fields) ⇒ Object
Legacy method for setting safe dump fields (for backward compatibility).
Instance Method Details
#safe_dump_field(field_name, callable = nil) ⇒ Object
Define a single safe dump field
61 62 63 64 65 66 67 68 69 70 71 72 73 74 |
# File 'lib/familia/features/safe_dump.rb', line 61 def safe_dump_field(field_name, callable = nil) @safe_dump_field_map ||= {} field_name = field_name.to_sym field_value = callable || lambda { |obj| if obj.respond_to?(:[]) && obj[field_name] obj[field_name] # Familia::DataType classes elsif obj.respond_to?(field_name) obj.send(field_name) # Regular method calls end } @safe_dump_field_map[field_name] = field_value end |
#safe_dump_field_map ⇒ Object
Returns the field map used for dumping
100 101 102 |
# File 'lib/familia/features/safe_dump.rb', line 100 def safe_dump_field_map @safe_dump_field_map || {} end |
#safe_dump_field_names ⇒ Object
Returns an array of safe dump field names in the order they were defined
95 96 97 |
# File 'lib/familia/features/safe_dump.rb', line 95 def safe_dump_field_names (@safe_dump_field_map || {}).keys end |
#safe_dump_fields(*fields) ⇒ Object
Define multiple safe dump fields at once
78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 |
# File 'lib/familia/features/safe_dump.rb', line 78 def safe_dump_fields(*fields) # If no arguments, return field names (getter behavior) return safe_dump_field_names if fields.empty? # Otherwise, define fields (setter behavior) fields.each do |field| if field.is_a?(Symbol) safe_dump_field(field) elsif field.is_a?(Hash) field.each do |name, callable| safe_dump_field(name, callable) end end end end |
#set_safe_dump_fields(*fields) ⇒ Object
Legacy method for setting safe dump fields (for backward compatibility)
105 106 107 |
# File 'lib/familia/features/safe_dump.rb', line 105 def set_safe_dump_fields(*fields) safe_dump_fields(*fields) end |