отсутствующие типы с контроллером 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
«правда» -> правда
Я не могу знать, какие значения у меня будут, поэтому я не могу объявить параметры с их типами.
У вас есть совет?