Ошибка аргумента: неверная дата
О чем может быть эта ошибка? Я определяю возраст в моей модели аккаунта:
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>
Заранее спасибо.
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
Это работает для меня. Проверьте параметры, которые вы устанавливаете.
Я почти уверен, что аргументы, которые вы передаете (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