2016-12-15 13 views
0

Я использую Savon для проверки некоторых SOAP-сервисов WSDL, а некоторым службам нужны дублированные ключи/значения в сообщении. Например, «продукт» значение внутри массива «продукции»:Как исправить «Игнорируемые дублированные ключи» в сообщении

@client.call(
    :create_template, message: { 
    :item => [{ 
     'promotion_id'  => "1", 
     'code_is_unique' => "0", 
     'name'   => "qasusc1", 
     'description'  => "Automation suscription", 
     'basecode'  => "qasusc1", 
     'total_redemptions' => "30", 
     'valid_from'  => "2016-12-12 00:00:00", 
     'valid_to'  => "2017-12-12 00:00:00", 
     'duration_quantity' => "1", 
     'duration_unit'  => "M", 
     'operator_code'  => "NAME", 
     'initial_quantity' => "30", 
     :products => [{ 
     :product => [{ 
      'id'   => "3", 
      'off_percentage' => "100", 
      'quantity'  => "1" 
     }], 
     :product => [{ 
      'id'   => "4", 
      'off_percentage' => "100", 
      'quantity'  => "1" 
     }] 
     }], 
     :lists => [{ 
     'list'   => "1" 
     }], 
     :promotion_rules => [{ 
     :promotion_rule => [{ 
      'code' => "HAS_PAYMENT_GATEWAY_RULE", 
      'value' => "1" 
     }] 
     }] 
    }] 
    } 
) 

Но я получаю следующее сообщение об ошибке:

tests/suites_soap/test_soap.rb:840: warning: duplicated key at line 22 ignored: :product 
+0

Добро пожаловать на переполнение стека. Пожалуйста, прочитайте «[mcve]». Нам нужно увидеть минимальный код и входные данные, которые демонстрируют проблему. Пожалуйста, добавьте код, который будет запускаться, и уменьшите ввод до наименьшего возможного ввода, который продолжает приводить к сообщению. Это помогает нам, так как нам не нужно писать тестовый жгут или сокращать данные, что замедляет ответы. –

ответ

2

Вы не можете дублировать ключ внутри хэша, период.

{ a: 1, a: 2 } будет всегда будет равен {a: 2}.

Согласно this issue, вы должны использовать массив для представления дублированных ключей в виде рубинового:

:products => [{ 
    :product => [ 
    { 
     'id'     => "3", 
     'off_percentage'  => "100", 
     'quantity'    => "1" 
    }, 
    { 
     'id'     => "4", 
     'off_percentage'  => "100", 
     'quantity'    => "1" 
    } 
    ] 
+0

Большое спасибо! что работало безупречно, и я понял реальную проблему с этим! –

 Смежные вопросы

  • Нет связанных вопросов^_^