2014-01-24 64 views
0

我需要迭代來自數據庫的所有記錄並對列的值進行求和,但僅限於今年。如何迭代當前年份內的所有記錄? Rails 4

例如,他們會問:「所有購買有1年的用戶。」

我怎麼能在軌道上做到這一點? Rails的?有一些方法可以爲我提供這項任務嗎?

例如,這樣的事情:

current_user.purchases.each do |purchase| 
    total_purchase += purchase.amount.to_i*purchase.product.price.to_f 
end 

對不起,我的英語水平。

+0

'總計有1年用戶的所有購買總額.' 這聽起來更像是你需要總結一年或一年以上的用戶購買的所有購買。 – toolz

+0

@toolz僅限一年。所有隻有2014年用戶的購買。 – Dvex

回答

0

提供的購買是一個的has_many關係到用戶,並有一個適當的日期字段,你可以使用

total_purchase = 0 
current_user.purchases.where('date_field > ?', Time.now.beginning_of_year).each do |purchase| 
    total_purchase += purchase.amount.to_f * purchase.product.price.to_f 
end 

,或者如果你想在去年使用,你可以改變where子句:
where(date_field: 1.year.ago.beginning_of_year..Time.now.beginning_of_year)

如果productpurchase有關係belongs_to,請考慮使用.includes(:product)來限制您的db查詢。

+0

超凡!謝謝:) – Dvex

+0

考慮研究相關指南http://guides.rubyonrails.org/active_record_basics.html – xlembouras

相關問題