2013-04-08 16 views
6

Ho bisogno di calcolare la somma del prodotto di due campi nella mia app Rails 3 (cioè l'equivalente della funzione sumproduct di Excel). C'è un metodo in Rails che ti aiuterà con questo e se no, allora quale sarebbe il codice di rotaie usando sql personalizzato?Rails 3 Somma Prodotto di due campi

Ad esempio, un hotel ha molte camere. Una stanza ha attributi di sqft (piedi quadrati), quantità (di quelle dimensioni) e hotel_id. Vorrei calcolare la superficie totale di tutte le camere in un determinato hotel. In SQL, per un Hotel.id = 8, credo che la seguente dichiarazione funzionerà:

select sum(rooms.sqft * rooms.quantity) as SumSqft from rooms inner join hotels on rooms.hotel_id = hotels.id where hotels.id = 8; 

risposta

17

Yep:

Room.where(hotel_id: 8).sum("sqft * quantity") 
+0

Perfetto. Grazie! Immagino per l'attuale azione di show hotel, potrei sostituire "@ hotel.id" per "8". – Ryan

+0

sì :) 10chars! –

0
def calculate 
    @hotel=Hotel.find(params[:id] 
    @rooms=Room.all.where(:hotel_id=>@hotel.id) 
    sum=0 
    @rooms.each do |room| 
    sum=sum+room.sqft*room.quantity 
    end 
    return sum 
end