В маршруте POST Grape API я ожидаю параметр массива actions
, который получает несколько действий различных types
.Я попытался условно потребовать properties
с использованием двух given
выражений, но обнаружил, что второе выражение всегда переопределяет первое.
Вот пример кода:
class Examples < Grape::API
namespace :examples do
params do
group :actions, type: Array[JSON] do
requires :action_type, type: String
given action_type: ->(val) { val == 'create' } do
requires :properties, type: Hash do
requires :category, type: String
end
end
given action_type: ->(val) { val == 'update' } do
requires :properties, type: Hash do
requires :not_category, type: String
end
end
end
end
post do
declared_params = declared params
...
end
end
end
В моей спецификации params
:
{\"actions\"=>[{\"action_type\"=>\"create_task\", \"properties\"=>{\"category\"=>\"to_do\"}}]}
Однако declared_params
всегда будет возвращать
{\"actions\"=>[{\"action_type\"=>\"create_task\", \"properties\"=>{\"not_category\"=>nil}}]}
Есть ли способ использовать given
без переопределения параметров