class Expense < ApplicationRecord PERIOD_OCCURENCES = { monthly: 12, annually: 1, weekly: 52, quarterly: 4 }.freeze enum :period, PERIOD_OCCURENCES.keys def monthly payment * PERIOD_OCCURENCES[period.to_sym] / 12 end def self.total Expense.sum(&:payment) end def self.monthly_total Expense.all.map(&:monthly).sum.round(2) end def self.credit_card_monthly_total Expense.where(credit_card: true).map(&:monthly).sum.round(2) end end