2014-03-26 32 views
1

我有以下軌道:獲取數組,而不是ActiveRecord的:關係

ts = Timesheet.select('CASE WHEN price_cents = 0 THEN false ELSE true END as Billable, SUM(time_end - time_start) AS Hours').where(:user => current_user).group('CASE WHEN price_cents = 0 THEN false ELSE true END') 

這個查詢可以讓我所有的收費和計費都不小時一氣呵成,所以在性能方面,這是完美的。

但是它返回

#<ActiveRecord::Relation [#<Timesheet id: nil>, #<Timesheet id: nil>]> 

它有2個記錄在它的時間。爲了能夠得到我需要做的時間:

ts.first.hours 

有沒有一種簡單的方法來獲得收費和無計費出ts?

回答

0

回報billablehours作爲數組:

ts = Timesheet.select('CASE WHEN price_cents = 0 THEN false ELSE true END as Billable, SUM(time_end - time_start) AS Hours').where(:user => current_user).group('CASE WHEN price_cents = 0 THEN false ELSE true END') 
ts.map { |t| [ t.billable, t.hours ] } 
+0

作品,如果我把計費和時間小寫。謝謝。 – rept

+0

對於那個給定的查詢,'t.Billable'應該可以工作。你能確保'Billable'已經提高了'B'。 – vee

+0

這是獲得可結算和不可結算小時數的最佳方式嗎? 如果我需要在視圖中顯示它們。 – rept

相關問題