2013-04-08 9 views
6

मुझे अपने रेल 3 ऐप में दो फ़ील्ड के उत्पाद की राशि की गणना करने की आवश्यकता है (यानी एक्सेल के Sumproduct फ़ंक्शन के बराबर)। क्या रेल में कोई तरीका है जो इससे मदद करेगा और यदि नहीं, तो कस्टम एसक्यूएल का उपयोग कर रेल कोड क्या होगा?रेल 3 अंक दो फ़ील्ड का उत्पाद

उदाहरण के लिए, एक होटल में कई कमरे हैं। एक कमरे में वर्गफुट (वर्ग फुट), मात्रा (उस आकार का) और hotel_id के गुण हैं। मैं किसी दिए गए होटल के सभी कमरों के कुल वर्गफुट की गणना करना चाहता हूं। एसक्यूएल में, एक 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

हाँ:

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

बिल्कुल सही। धन्यवाद! मैं वर्तमान होटल शो एक्शन के लिए कल्पना करता हूं, मैं "8" के लिए "@ hotel.id" को प्रतिस्थापित कर सकता हूं। – 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 
संबंधित मुद्दे