module MyAge::Calculator

Public Class Methods

included(base) click to toggle source
# File lib/my_age/calculator.rb, line 8
def self.included(base)
  def base.my_dob(col)
    define_method(:dob) { send col }
  end
end

Public Instance Methods

age(date = Date.today) click to toggle source
# File lib/my_age/calculator.rb, line 15
def age(date = Date.today)
  return 0 if dob.blank? || date.blank? || date <= dob

  (date_to_int(date) - date_to_int(dob)) / 10_000
end
method_missing(name, *args) click to toggle source
Calls superclass method
# File lib/my_age/calculator.rb, line 21
def method_missing(name, *args)
  if name.to_s =~ /_as_of_/
    date_method = name.to_s.split('_as_of_')[-1]
    age today.send(date_method.to_sym, *args)
  else
    super
  end
end

Private Instance Methods

date_to_int(date) click to toggle source
# File lib/my_age/calculator.rb, line 32
def date_to_int(date)
  date.strftime('%Y%m%d').to_i
end
today() click to toggle source
# File lib/my_age/calculator.rb, line 36
def today
  Date.today
end