Ayuda con Arrays y Hashes

Hola a todos, pues soy un muy nuevo estudiante en ruby y por el momento
tengo de tarea una creacion de invoices en que debo crear un invoice
hecho de diferentes hashes y arrays y permitiendo que se agreguen nuevos
clientes por el momento el codigo que tengo escrito parece no ser
suficiente solo puedo jalar el nombre de todos los clientes el codigo de
el que debo sacar los clientes es el siguiente :
orders_by_customer_id =
{
101 => [
{ :product_id => 11, :quantity => 5 },
{ :product_id => 25, :quantity => 8 },
{ :product_id => 13, :quantity => 14 }],
24 => [
{ :product_id => 16, :quantity => 5 },
{ :product_id => 24, :quantity => 8 }],
36 => [
{ :product_id => 19, :quantity => 19 },
{ :product_id => 49, :quantity => 9 },
{ :product_id => 36, :quantity => 7 }]
}

products_by_id = {
11 => { :name => “Baar”, :price => 14.23 },
25 => { :name => “jueguetes”, :price => 4.34 },
13 => { :name => “androide”, :price => 56.00 },
42 => { :name => “creoque”, :price => 12.45 },
35 => { :name => “zapatos”, :price => 86.00 }
}

customers_by_id = {
101 => { :name => ‘nola canola’, :address => ‘128 Good St.’,
:city => ‘orlando’, :province => ‘sb’ },
24 => { :name => ‘Hogans alley’, :address => ‘67 Pylon Way’,
:city => ‘teneese’, :province => ‘cd’ },
36 => { :name => ‘super pipiricho’, :address => ‘342 Modem
Drive’, :city => ‘andromeda’, :province => ‘ck’ },

}

Sales_tax_by_province = { ‘CK’ => 0.07, ‘cd’ => 0, ‘sb’ => 0.07, ‘DC’ =>
0.05 }

GST = 0.05

ahora lo que hasta el momento he podido codificar es un loop para poder
pasar por toodos los nombres :

customers_by_id.each do |names,|
customer_info = “#{customers_by_id[names][:name]}”
customer_info += “#{customers_by_id[names][:address]}”
customer_info += “#{customers_by_id[names][:city]}”
customer_info += “#{customers_by_id[names][:province]}”
puts customer_info

pero se supone debo crear un codigo que de al correrlo una vez con entar
Una ID de cliente si fuese por ejemplo el cliente 101:

Invoice for Nola Canola
342 Modem Drive
orlando, SB

Baar… 17 x $4.34 = $73.78
juguetes … 2 x $12.45 = $24.90
zapatos … 7 x $86.00 = $602.00

Sub Total : $700.68
PST (5.00%) : $35.03
GST (5.00%) : $35.03
Grand Total : $770.74

mi pregunta es no se si estoy abordando esto de la manera correcta estoy
haciendo each do loops a lo mejor pensaba hacer each do loops combinados
pero no me funcionan podria alguien por favor orientarme en la direccion
correcta??