Ошибка аргумента: неверная дата

О чем может быть эта ошибка? Я определяю возраст в моей модели учетной записи:

def age
    birthday = DateTime.new(year_Of_Birth.to_i, month_Of_Birth.to_i, day_Of_Birth.to_i)
    self.age = ((DateTime.now - birthday) / 365.25).to_i
  end

и, на мой взгляд, я получаю следующую ошибку:

ArgumentError - недопустимая дата в следующей строке:

<dd><%= @account.age %></dd>

Заранее спасибо.


person pMpC    schedule 13.11.2014    source источник
comment
Вы уверены, что все year_Of_Birth, month_Of_Birth и day_Of_Birth не равны нулю?   -  person Brennan    schedule 14.11.2014
comment
да, потому что на модели я подтвердил их присутствие, чтобы они были правдой   -  person pMpC    schedule 14.11.2014
comment
Вы пробовали тестировать это на своей консоли?   -  person doz87    schedule 14.11.2014
comment
как я должен проверить это? Я новичок в рубине и рубиновой шахте   -  person pMpC    schedule 14.11.2014
comment
Каковы значения для year_Of_Birth, month_Of_Birth и day_Of_Birth?   -  person Substantial    schedule 14.11.2014


Ответы (2)


Попробуйте протестировать в консоли приложения Rails:

birthday = DateTime.new(1991,4,2)       => Tue, 02 Apr 1991 00:00:00 +0000
DateTime.now - birthday                 => (149073456141953/17280000000)
(DateTime.now - birthday)/365.25        => 23.61926437561592
((DateTime.now - birtday)/365.25).to_i  => 23

Это работает для меня. Проверьте параметры, которые вы устанавливаете.

person Mateo Vidal    schedule 13.11.2014
comment
я получаю те же результаты, что и вы, за исключением DateTime.now - день рождения, который я получаю: (745374204810193543/86400000000000) - person pMpC; 14.11.2014

Я почти уверен, что аргументы, которые вы передаете (year_Of_Birth.to_i, month_Of_Birth.to_i, day_Of_Birth.to_i), имеют что-то неправильное, отладьте их и покажите нам значения, или, если вы хотите, вы можете попробовать это, чтобы поймать какую-то конкретную ошибку :

begin
 birthday = DateTime.new(year_Of_Birth.to_i, month_Of_Birth.to_i, day_Of_Birth.to_i)
 self.age = ((DateTime.now - birthday) / 365.25).to_i
rescue ArgumentError
 #your logic
end
person Mateo Vidal    schedule 14.11.2014
comment
Я сделал это, и он возвращается к другому пользователю с пустыми полями. - person pMpC; 14.11.2014