Я успешно вызываю операцию, используя Savon для получения данных от конечной точки SOAP. Каждый возвращаемый объект является хешем ~ 15 элементов.
Когда API необходимо вернуть несколько объектов, он возвращает их в массиве, например:
data = [{key1a => val1a, key1b => val1b, key1c => val1c}, {key2a => val2a, key2b => val2b, key2c => val2c}, {key3a => val3a, key3b => val3b, key3c = > val3c}]
Это позволяет мне перебирать ответы с data.each, а затем разбивать хеш внутри блока.
Если я получаю один ответ, он возвращает только хэш, не заключенный в массив. Это означает, что когда я запускаю .each против него, он смотрит на элементы Hash (key1a и т. Д.)
data = {key => val, key2 => val2, key3 => val3}
Чтобы обойти это, мне пришлось запустить .class для возвращаемого объекта и обращаться с ним по-разному, если это массив или хэш.
Я посмотрел на необработанные возвращенные данные из API, и структура разметки выглядит одинаково, поэтому я подозреваю, что это поведение Savon больше, чем поведение API.
Есть ли способ изменить это? Не уверен, что это «ошибка» как таковая, но, безусловно, делает мой код более запутанным, чем нужно.