Class: Grape::Validations::Types::ArrayCoercer
- Inherits:
-
DryTypeCoercer
- Object
- DryTypeCoercer
- Grape::Validations::Types::ArrayCoercer
- Defined in:
- lib/grape/validations/types/array_coercer.rb
Overview
Coerces elements in an array. It might be an array of strings or integers or an array of arrays of integers.
It could've been possible to use an +of+
method (https://dry-rb.org/gems/dry-types/1.2/array-with-member/)
provided by dry-types. Unfortunately, it doesn't work for Grape because of
behavior of Virtus which was used earlier, a Grape::Validations::Types::PrimitiveCoercer
maintains Virtus behavior in coercing.
Direct Known Subclasses
Instance Method Summary collapse
- #call(_val) ⇒ Object
-
#initialize(type, strict = false) ⇒ ArrayCoercer
constructor
A new instance of ArrayCoercer.
Methods inherited from DryTypeCoercer
coercer_instance_for, collection_coercer_for
Constructor Details
#initialize(type, strict = false) ⇒ ArrayCoercer
Returns a new instance of ArrayCoercer.
15 16 17 18 19 20 |
# File 'lib/grape/validations/types/array_coercer.rb', line 15 def initialize(type, strict = false) super @coercer = scope::Array @subtype = type.first end |
Instance Method Details
#call(_val) ⇒ Object
22 23 24 25 26 27 |
# File 'lib/grape/validations/types/array_coercer.rb', line 22 def call(_val) collection = super return collection if collection.is_a?(InvalidValue) coerce_elements collection end |