Похоже, проблема, которую вы хотите решить, не та, что у вас есть.
TypeError (Symbol as array index)
Эта ошибка говорит мне, что у вас есть массив, но вы обрабатываете его как хэш и передаете символьный ключ, когда он ожидает целочисленный индекс.
Кроме того, большинство анализаторов XML предоставляют дочерние узлы в виде массива, даже если есть только один. Так что это не должно быть необходимым.
В случае аргументов метода вы можете проверить тип объекта. Это позволяет передавать один объект или массив и преобразовывать в массив только в том случае, если он не один, поэтому вы можете обрабатывать его идентично для этой точки.
def foo(obj)
obj = [obj] unless obj.is_a?(Array)
do_something_with(obj)
end
Или что-то чище, но более загадочно
def foo(obj)
obj = [*obj]
do_something_with(obj)
end
Используется оператор splat для выделения массива, если он один. Таким образом, он разбрасывает его (или не меняет), и вы можете затем обернуть его в массив, и все будет хорошо.