Мне тоже приходилось иметь дело с этим, но месяцами. Стало слишком сложно. Самый простой способ, которым я мог придумать, был:
def month_number(today = Date.today)
n = 0
while (dob >> n+1) <= today
n += 1
end
n
end
Вы можете сделать то же самое с 12 месяцами:
def age(today = Date.today)
n = 0
while (dob >> n+12) <= today
n += 1
end
n
end
Это будет использовать класс Date для увеличения месяца, который будет иметь дело с 28 днями и високосным годом и т. Д.