2013-04-08 3 views
6

Мне нужно вычислить сумму произведения двух полей в моем приложении Rails 3 (т. Е. Эквивалент функции sumproduct Excel). Есть ли способ в Rails, который поможет с этим, а если нет, то каков будет код rails с использованием пользовательского sql?Rails 3 Sum Продукт двух полей

Например, в отеле много номеров. Комната имеет атрибуты квадратного метра (квадратные футы), количество (этого размера) и hotel_id. Я хотел бы рассчитать общую площадь всех комнат в данном отеле. В SQL для Hotel.id = 8, я считаю, что следующее утверждение будет работать:

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

ответ

17

Yep:

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

Совершенная. Благодаря! Я предполагаю, что для нынешнего действия шоу отеля я мог бы заменить «@ hotel.id» на «8». – Ryan

+0

да :) 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 
Смежные вопросы