Если вы присваиваете недопустимую дату (например, 39 декабря) столбцу datetime, ActiveRecord возвращает ошибку «не может быть пустой», когда, вероятно, должна возвращать ошибку типа «Неправильная дата»
Мой вопрос. Это ожидаемое поведение рельсов, ошибка или что-то, что я мог бы исправить?
class ExerciseLog < ActiveRecord::Base
validates_presence_of :scheduled_datetime
end
Запустите консоль.
e = Log.new
# lets set a date for Dec 39th which obviously doesn't exist
e.scheduled_datetime = "2010-12-39"
e.save
=> false
# this is the confusing message since our form did post a valid date
e.errors.on(:scheduled_datetime)
=> "can't be blank"
e.scheduled_datetime = "2010-12-30"
e.save
=> true
Я обнаружил эту проблему, когда случайно перенес значения месяца и дня.
Кстати, это в Rails 2.3.5