отсутствующие типы с контроллером Grape + синтаксический анализ рельсов после синтаксического анализа

Я столкнулся с этой проблемой с виноградом + рельсами

В моем контроллере у меня есть это.

        class RandomData < Grape::API
    namespace '/random_data' do
      desc 'some' do
        tags ['some']
      end

      params do
        optional :my_values, type: Hash #or JSON
      end

      post do
        debugger
       
        status 201
      end
    end
  end

а потом на моем тесте у меня есть это

      RSpec.describe V0::RandomData, type: :request, mask_errors: true do
  describe 'GET /v0/random_data' do
    let(:do_request) { post url, params: params, headers: headers }
    let(:url) { '/v0/random_data' }
    let(:headers) { {} }

    context 'with a valid json params' do
      let(:params) {{ my_values:{a: 1, b:1.1, c: true}  }}
      it 'calls PayloadValidatorService' do
          do_request

          expect(response.status).to eq 201
        end
      end
    end

В отладчике у меня это

      (rdbg) params
{"my_values"=>{"a"=>"1", "b"=>"1.1", "c"=>"true"}}
(rdbg) declared(params)    # ruby
{"my_values"=>{"a"=>"1", "b"=>"1.1", "c"=>"true"}}
(rdbg)

Я хотел принять любой json с логическим значением/датами/целым числом, но похоже, что я всегда получаю строку, я хотел иметь значения, которые он имеет в json.

"1.1" -> 1.1

"1" -> 1

«правда» -> правда

Я не могу знать, какие значения у меня будут, поэтому я не могу объявить параметры с их типами.

У вас есть совет?

0 ответов

Другие вопросы по тегам