2017-04-22 10 views
0

私はアプリでtotal_time_pausedをキャプチャしようとしています。私は2つのdatetimesを取って、それらの間の秒をtotal_time_pausedに保存することでこれをやっています。今すぐ毎回データを再起動します。私は実際に再起動しないでインクリメントしたい。ここに私のコードです。データ型整数。増分を再開しないでください。 -Rails

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_time_paused'変数に' total_paused_time'をどのように追加していますか? – 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 

使用しての利点を"+ ="の代わりに "増分!"レコードを追加して保存します。 "+ ="は番号をインクリメントしますが、保存しません。 .save before_saveフィルタでそれを置く必要があります。

関連する問題