Class: Metaschema::ModelGenerator::Services::FieldDeserializer
- Inherits:
-
Object
- Object
- Metaschema::ModelGenerator::Services::FieldDeserializer
- Defined in:
- lib/metaschema/model_generator/services/field_deserializer.rb
Overview
Deserializes a field value from the source format into a model instance. Handles SINGLETON_OR_ARRAY normalization and collapsible field expansion.
Pipeline: normalize -> separate -> cast -> validate_collection -> transform
Class Method Summary collapse
Instance Method Summary collapse
- #call ⇒ Object
-
#initialize(model, attr, format, data, group_as:, collapsible:) ⇒ FieldDeserializer
constructor
A new instance of FieldDeserializer.
Constructor Details
#initialize(model, attr, format, data, group_as:, collapsible:) ⇒ FieldDeserializer
Returns a new instance of FieldDeserializer.
11 12 13 14 15 16 17 18 19 20 |
# File 'lib/metaschema/model_generator/services/field_deserializer.rb', line 11 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
22 23 24 |
# File 'lib/metaschema/model_generator/services/field_deserializer.rb', line 22 def self.call(...) new(...).call end |
Instance Method Details
#call ⇒ Object
26 27 28 29 30 31 32 33 34 35 |
# File 'lib/metaschema/model_generator/services/field_deserializer.rb', line 26 def call data = normalize(@data) data = separate(data) if @collapsible data = cast(data) validate_collection!(data) data = transform(data) data = unwrap_singleton(data) @model.public_send(:"#{@attribute.name}=", data) end |