Преобразовать массив хешей в хеши без массива и перезаписи

Задаю переменной hash массив хешей:

[12] pry(main)> hash = {:sku=>"1234", :name=>"Test"}, {:sku=>"5678", :name=>"Test2"}
=> [{:sku=>"1234", :name=>"Test"}, {:sku=>"5678", :name=>"Test2"}]

Но при использовании данных в цикле получаю ошибку "TypeError: can't cast Hash".

Вопрос: как преобразовать массив хешей в хеши без массива и перезаписи?

Чтобы переменная hash соответствовала следующему:
{:sku=>"1234", :name=>"Test"}, {:sku=>"5678", :name=>"Test2"}


Ответы (1 шт):

Автор решения: Sergey Fedorov

Ты хочешь вынуть из массива хэши и сохранить в переменной как указано?

{:sku=>"1234", :name=>"Test"}, {:sku=>"5678", :name=>"Test2"}

Это невозможно, потому что в результате получается группа хэшей, которая не может существовать сама по себе. Чтобы работать с этими хэшами как c одним объектом (например, обойти в цикле и изменить значения), нужно поместить их в контейнер или объединить в один хэш, но тут тупик: вкладывать их в контейнер бессмысленно, потому что они уже там судя по твоему вопросу — в том самом массиве из которого ты пытаешься их вытащить, а объединить их в хэш нельзя, потому что у хэша ключи всегда уникальны и в результате объединения ты потеряешь значения.

Обычно такой клинч говорит о том, что ты пытаешься решить какую-то проблему неправильным путем. Тебе нужно более подробно объяснить, какую задачу ты пытаешься решить таким способом, а еще лучше показать код.

→ Ссылка