in codegen/projections/rails_json/lib/rails_json/params.rb [628:678]
def self.build(params, context: '')
return params if params.is_a?(Types::MyUnion)
Seahorse::Validator.validate!(params, ::Hash, Types::MyUnion, context: context)
unless params.size == 1
raise ArgumentError,
"Expected #{context} to have exactly one member, got: #{params}"
end
key, value = params.flatten
case key
when :string_value
Types::MyUnion::StringValue.new(
params[:string_value]
)
when :boolean_value
Types::MyUnion::BooleanValue.new(
params[:boolean_value]
)
when :number_value
Types::MyUnion::NumberValue.new(
params[:number_value]
)
when :blob_value
Types::MyUnion::BlobValue.new(
params[:blob_value]
)
when :timestamp_value
Types::MyUnion::TimestampValue.new(
params[:timestamp_value]
)
when :enum_value
Types::MyUnion::EnumValue.new(
params[:enum_value]
)
when :list_value
Types::MyUnion::ListValue.new(
(StringList.build(params[:list_value], context: "#{context}[:list_value]") unless params[:list_value].nil?)
)
when :map_value
Types::MyUnion::MapValue.new(
(StringMap.build(params[:map_value], context: "#{context}[:map_value]") unless params[:map_value].nil?)
)
when :structure_value
Types::MyUnion::StructureValue.new(
(GreetingStruct.build(params[:structure_value], context: "#{context}[:structure_value]") unless params[:structure_value].nil?)
)
else
raise ArgumentError,
"Expected #{context} to have one of :string_value, :boolean_value, :number_value, :blob_value, :timestamp_value, :enum_value, :list_value, :map_value, :structure_value set"
end
end