2013-04-08 14 views
6

Ich muss die Summe des Produkts von zwei Feldern in meiner Rails 3 App berechnen (d. H. Das Äquivalent zu SumProduct-Funktion von Excel). Gibt es eine Methode in Rails, die dabei hilft und wenn nicht, was wäre dann der Rails-Code mit benutzerdefinierten SQL?Rails 3 Summe Produkt von zwei Feldern

Zum Beispiel hat ein Hotel viele Zimmer. Ein Raum hat Attribute von sqft (Quadratfuß), Quantität (von dieser Größe) und hotel_id. Ich möchte die Gesamtfläche aller Zimmer in einem bestimmten Hotel berechnen. In SQL für eine Hotel.id = 8, glaube ich, die folgende Anweisung funktioniert:

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

Antwort

17

Yep:

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

Perfect. Vielen Dank! Ich stelle mir für die aktuelle Hotelshow Aktion vor, ich könnte "@ hotel.id" für "8" ersetzen. – Ryan

+0

ja :) 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 
Verwandte Themen