Class: CommandTower::Deserializers::Clients::Result
- Inherits:
-
Object
- Object
- CommandTower::Deserializers::Clients::Result
- Includes:
- ActiveModel::Attributes, ActiveModel::Model
- Defined in:
- app/deserializers/command_tower/deserializers/clients/result.rb
Overview
Validated response Result contracts for client deserializers.
ActiveModel attributes are storage only; validation policy lives in field / build!.
Class Method Summary collapse
- .build!(**attrs) ⇒ Object
- .field(name, type:, required: false, nullable: false, default: DEFAULT_UNSET) ⇒ Object
- .field_definitions ⇒ Object
Instance Method Summary collapse
- #==(other) ⇒ Object (also: #eql?)
Class Method Details
.build!(**attrs) ⇒ Object
40 41 42 43 44 45 46 47 48 |
# File 'app/deserializers/command_tower/deserializers/clients/result.rb', line 40 def build!(**attrs) values = {} field_definitions.each do |name, | raw = attrs.key?(name) ? attrs[name] : Missing values[name] = resolve_field(name, , raw) end new(**values) end |
.field(name, type:, required: false, nullable: false, default: DEFAULT_UNSET) ⇒ Object
16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
# File 'app/deserializers/command_tower/deserializers/clients/result.rb', line 16 def field(name, type:, required: false, nullable: false, default: DEFAULT_UNSET) name = name.to_sym normalized_type = Types.normalize(type) if default.equal?(DEFAULT_UNSET) has_default = false default_value = nil else validate_default!(default) has_default = true default_value = default end field_definitions[name] = { type: normalized_type, required: required, nullable: nullable, has_default: has_default, default: default_value } attribute name end |
.field_definitions ⇒ Object
50 51 52 |
# File 'app/deserializers/command_tower/deserializers/clients/result.rb', line 50 def field_definitions @field_definitions ||= {} end |
Instance Method Details
#==(other) ⇒ Object Also known as: eql?
115 116 117 |
# File 'app/deserializers/command_tower/deserializers/clients/result.rb', line 115 def ==(other) other.instance_of?(self.class) && attributes == other.attributes end |