Несколько `данных` блоков переопределяют параметры в GRAPE API - PullRequest
0 голосов
/ 27 июня 2019

В маршруте 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 без переопределения параметров

...