Skip to content

Instantly share code, notes, and snippets.

@robsonmarques
Last active December 24, 2015 14:49
Show Gist options
  • Save robsonmarques/6815504 to your computer and use it in GitHub Desktop.
Save robsonmarques/6815504 to your computer and use it in GitHub Desktop.
Calculator
# models/active_debt.rb
class ActiveDebt < ActiveRecord::Base
delegate :fine, to: :calculator, prefix: :updated
def calculator
LatePaymentPenalty.new self
end
end
# Use:
# active_debt.updated_fine
# active_debt.updated_fine Date.tomorrow
# business/late_payment_penalty.rb
class LatePaymentPenalty
attr_reader :debt
delegate :value, :due_date, to: :debt
def initialize(debt)
@debt = debt
end
def fine(base_date = Date.current)
fine_calculator.new value, from: due_date, to: base_date
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment