Используйте метод карты вместо .each.
Метод map можно использовать для создания нового массива на основе исходного массива, но со значениями, измененными предоставленным блоком.См. Пример ниже.
В случае каждый метод
irb(main):001:0> arr = [1, 2, 3, 4, 5]
=> [1, 2, 3, 4, 5]
irb(main):002:0> arr.each { |a| print a -= 10, " " }
-9 -8 -7 -6 -5
=> [1, 2, 3, 4, 5]
, который вы можете увидеть после итераций, он вернул исходный массив.Но в случае map
irb(main):005:0> arr = [1, 2, 3, 4, 5]
=> [1, 2, 3, 4, 5]
irb(main):006:0> arr.map { |a| 2*a }
=> [2, 4, 6, 8, 10]
map может преобразовывать содержимое массива, что означает, что он может выполнять операцию с каждым элементом в массиве.