2013-04-08 20 views
6

Rails 3 uygulamasında iki alanın ürününün toplamını hesaplamam gerekiyor (ör. Excel'in sumproduct işlevine eşdeğer). Bu konuda yardımcı olacak Rails bir yöntem var mı ve değilse, o zaman özel sql kullanarak raylar kodu ne olurdu? Örneğin, bir otelin birçok odası vardır. Bir oda sqft (feet kare), miktar (o büyüklükte) ve hotel_id niteliklerine sahiptir. Verilen bir otelin tüm odalarının toplam sqft değerini hesaplamak istiyorum. SQL olarak, Hotel.id = 8 için ben şu deyimi çalışacak inanıyoruz:Raylar 3 Toplam İki alanın ürünü

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

cevap

17

Yep:

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

mükemmeldir. Teşekkürler! Şu anki otel gösterisi eylemini hayal ediyorum, "8" için "@ hotel.id" yazabilirim. – Ryan

+0

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