我發佈了一個similar question這個不久之前,關於格式化MySQL查詢使用塊,並得到了非常好的迴應,但他們是非常具體的問題。這一次,我正在處理在表格中獲取行的.sum()
。這裏是我現在得到的:在紅寶石中添加塊
def balance
balance = 0
items.each do |item|
balance = balance + item.charges.sum(:revenue, :conditions => ['created_at >= ?', Time.now.beginning_of_month])
end
balance
end
我的目標是獲取給定用戶的本月所有費用的總和。費用屬於屬於用戶的項目。我相信在Ruby/Rails中有更好的方法來做到這一點。
你會怎麼做?
我不知道爲什麼在這裏的幾個人似乎在迭代過結果的方法,這是昂貴的,當你可以做到使用ActiveRecord提供了方法,SQL整個計算跳躍。這裏不需要.each,.map,.reduce或.inject。 – 2009-12-10 20:15:18
請在我的回答後看到我的評論。我測試過它,它工作。這正是SQL連接的情況,沒有理由迭代你的結果,或者做多個查詢(Ian的第二個代碼就是這樣),這兩者都會給你的項目增加不必要的複雜性和處理。 – 2009-12-10 20:52:15
@Jordan:我同意。我自己,我太瞭解OP的問題了(如何在塊中總結數字),而不是看實際的*問題*(從SQL表中求和)。 – 2009-12-10 21:20:02