(備忘録/Rails)作業ログから今日の作業時間(合計)を求める

  • 自前の作業管理アプリについて..
  • 今日の0:00~現在までの作業時間計を得たい
  • ログイン中のユーザーをcurrent_userで取得しており、
  • Logモデル(テーブル)にminutes(作業時間)カラムがある
  • きれいに書けたので
# ログイン中のユーザーのログ(今日)の作業時間(分)を取得する
def current_user_todays_performance
  todays_minutes = current_user.logs.where(
    "created_at >= ? AND created_at <= ?",
    Time.now.beginning_of_day,
    Time.now
  )
  .pluck(:minutes)
  todays_hours = todays_minutes.sum / 60.0    # Railsのsum
  @todays_performance = todays_hours.round(2)
end

# これを以下のようにする
before_action :current_user_todays_performance,
  only: [:index]

# ちなみにRubyにsumはない
# puts [1, 2, 3].sum    # undefined method 'sum'..
# puts [1, 2, 3].inject(:+)    # 6