Ruby версии> = 2.4.0 имеет метод подсчета # суммы. Таким образом, вы можете сделать
arr.sum {|h| h[:amount] }
Ответ 4
Это один из способов сделать это:
a = {amount:10,gl_acct_id:1,alt_amount:20},{amount:20,gl_acct_id:2,alt_amount:30}
a.map {|h| h[:amount] }.reduce(:+)
Однако у меня возникает ощущение, что ваша объектная модель несколько не хватает. С лучшей объектной моделью вы, вероятно, сможете сделать что-то вроде:
a.map(&:amount).reduce(:+)
Или даже просто
a.sum
Обратите внимание, что, как указывал @sepp2k, если вы хотите выйти из Hash, вам нужно снова обернуть его в Hash.