Вы можете создать объект Date
напрямую с помощью:
Date.new(year, month, day)
Нет необходимости преобразовывать его в строку и анализировать.Разбор также может быть опасным.1982-04-02
4 февраля или 2 апреля?
Вы не можете добавить число и строку, как это, кстати.1 + '2'
должно быть '12'
или 3
?Ruby не может решить за вас, поэтому вам нужно явно преобразовать целые числа в строку.
day.to_s + "-" + month.to_s + "-" + year.to_s
или просто
[day, month, year].join('-')
Но вам все равно это не нужно:
require 'date'
def age_in_days(day, month, year)
birthdate = Date.new(year, month, day)
(Date.today - birthdate).to_i
end