2013-04-08 15 views
6

Potrzebuję obliczyć sumę iloczynu dwóch pól w mojej aplikacji Rails 3 (to jest odpowiednik funkcji sumproduktu programu Excel). Czy w Railsach istnieje metoda, która pomoże w tym, a jeśli nie, to jaki byłby kod szyny przy użyciu niestandardowego sql?Szyny 3 Suma Produkt z dwóch pól

Na przykład hotel ma wiele pokoi. Pokój ma atrybuty sqft (square feet), quantity (tego rozmiaru) i hotel_id. Chciałbym obliczyć całkowitą kwotę wszystkich pokoi w danym hotelu. W SQL dla Hotel.id = 8, wierzę następujące oświadczenie będzie działać:

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

Odpowiedz

17

Tak:

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

Idealny. Dzięki! Wyobrażam sobie, że w przypadku obecnej akcji hotelowej mogę zastąpić "@ hotel.id" jako "8". – Ryan

+0

tak :) 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