Class: Metaschema::ModelGenerator::Services::FieldSerializer
- Inherits:
-
Object
- Object
- Metaschema::ModelGenerator::Services::FieldSerializer
- Defined in:
- lib/metaschema/model_generator/services/field_serializer.rb
Overview
Serializes a field value from a model instance to the target format. Handles SINGLETON_OR_ARRAY normalization and collapsible field merging.
Pipeline: transform -> make_collapsible -> serialize -> apply_value_map
-> collapse -> denormalize
Class Method Summary collapse
Instance Method Summary collapse
- #call ⇒ Object
-
#initialize(model, attr, format, data, group_as:, collapsible:) ⇒ FieldSerializer
constructor
A new instance of FieldSerializer.
Constructor Details
#initialize(model, attr, format, data, group_as:, collapsible:) ⇒ FieldSerializer
Returns a new instance of FieldSerializer.
14 15 16 17 18 19 20 21 22 23 |
# File 'lib/metaschema/model_generator/services/field_serializer.rb', line 14 def initialize(model, attr, format, data, group_as:, collapsible:) @model = model @attribute = model.class.attributes[attr] @format = format @mapping_rule = model.class.mappings[format].mappings .find { |r| r.to == attr } @data = data @group_as = group_as @collapsible = collapsible end |
Class Method Details
.call ⇒ Object
25 26 27 |
# File 'lib/metaschema/model_generator/services/field_serializer.rb', line 25 def self.call(...) new(...).call end |
Instance Method Details
#call ⇒ Object
29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
# File 'lib/metaschema/model_generator/services/field_serializer.rb', line 29 def call value = @model.public_send(@attribute.name) return if value.nil? value = transform(value) value = make_collapsible(value) if @collapsible value = serialize(value) return unless @mapping_rule&.render?(value, @model) value = apply_value_map(value) value = collapse(value) if @collapsible value = denormalize(value) @data[@mapping_rule.name] = value end |