2017-04-22 33 views
0

我正試圖在我的應用中捕獲total_time_paused。我通過取兩個日期時間並將它們之間的秒數存儲在total_time_paused中來完成此操作。現在它每次都會重新啓動數據。我實際上希望它增加不重新啓動。這是我的代碼。數據類型整數。繼續增加不重新啓動。 - 郵件

def total_paused_time 
    (timekeeper.paused_at - timekeeper.unpaused_at).abs.round 
end 

所以我在這裏採取paused_at datetime和unpaused_at datetime我得到它們之間的秒數。然後我把這個時間作爲一個整數屬性調用total_time_paused傳入。這可行,但每次我暫停和取消暫停時,它會重置total_time_paused屬性,當我真的希望它增加存儲的現有數量時。我怎樣才能做到這一點?

+0

你如何將total_paused_time添加到total_time_paused變量? – Gerry

+0

而不是做這個'(timekeeper.paused_at --timekeeper.unpaused_at).abs.round',在這種情況下你可以使用'timekeeper.paused_at.to_i --timekeeper.unpaused_at.to_i'實現同樣的效果,即使它沒有它會逃脫從例外。 –

回答

1

你將不得不發佈更多關於你的總時間邏輯,但這是我看到的問題。

每次計算出總的暫停時間:

def total_paused_time 
    (timekeeper.paused_at - timekeeper.unpaused_at).abs.round 
end 

要覆蓋以前的值。

您應該有一個存儲您的總暫停時間的列。你想要做的就是在該列中添加沒有設置的總秒數。

def total_paused_time 
    total_seconds = (timekeeper.paused_at - timekeeper.unpaused_at).abs.round 
    # add the new paused seconds to the previous 
    self.total_paused_time += total_seconds 
end 

你也可以做到這一點的軌道: 「增量」

def total_paused_time 
    total_seconds = (timekeeper.paused_at - timekeeper.unpaused_at).abs.round 
    # add the new paused seconds to the previous 
    self.increment!(:total_paused_time, by= total_seconds) 
end 

使用的優點而不是「+ =」是「增量!」添加並保存記錄。 「+ =」只增加數字,但不保存。你必須在before_save過濾器中調用.save文件。

相關問題