2013-04-08 26 views
6

Tôi cần tính tổng của sản phẩm của hai trường trong ứng dụng Rails 3 của tôi (tức là tương đương với hàm sumproduct của Excel). Có một phương pháp trong Rails sẽ giúp đỡ với điều này và nếu không, sau đó những gì sẽ là mã rails bằng cách sử dụng sql tùy chỉnh?Đường ray 3 Tổng sản phẩm của hai trường

Ví dụ: Khách sạn có nhiều Phòng. Phòng có các thuộc tính của foot vuông (feet vuông), số lượng (có kích thước) và hotel_id. Tôi muốn tính tổng sqft của tất cả các phòng trong một khách sạn nhất định. Trong SQL, cho một Hotel.id = 8, tôi tin rằng các tuyên bố sau đây sẽ làm việc:

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

Trả lời

17

Yep:

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

Perfect. Cảm ơn! Tôi tưởng tượng cho hành động hiển thị khách sạn hiện tại, tôi có thể thay thế "@ hotel.id" cho "8". – Ryan

+0

có :) 10chăm! –

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 
Các vấn đề liên quan