class Grape::Validations::Types::MultipleTypeCoercer
successfully “coerce” the value.
an allowed type it should be declared last, since it will always
to successfully coerce the parameter value. Therefore if String is:types, and will return the value returned by the first coercer
apply these coercers to parameter values in the order given to
in the array passed to :types using {Types.build_coercer}. It willMultipleTypeCoercer will build a coercer for each type declared
have been declared to be of variant-type using the :types option.
This class is intended for use with Grape endpoint parameters that
def call(val)
-
(Object, InvalidValue)- the coerced result, or an instance
Parameters:
-
val(String) -- value to be coerced, in grape
def call(val) # once the value is coerced by the custom method, its type should be checked val = @method.call(val) if @method coerced_val = InvalidValue.new @type_coercers.each do |coercer| coerced_val = coercer.call(val) return coerced_val unless coerced_val.is_a?(InvalidValue) end coerced_val end
def initialize(types, method = nil)
-
method(#call, #parse) -- method by which values should be -
types(Array) -- list of allowed types
def initialize(types, method = nil) @method = method.respond_to?(:parse) ? method.method(:parse) : method @type_coercers = types.map do |type| if Types.multiple? type VariantCollectionCoercer.new type, @method else Types.build_coercer type, strict: !@method.nil? end end end