Я столкнулся с этой идиосинкразией при тестировании моих проверок.С миграцией, определенной следующим образом:
create_table :time_windows do |t|
t.datetime :window_begin, :null => true
t.datetime :window_end, :null => true
end
в irb
>> t = TimeWindow.new({:window_begin => Time.now, :window_end => "not a time"})
=> #<TimeWindow id: nil, window_begin: "2010-07-29 15:54:07", window_end: nil>
Мой вопрос заключается в том, почему ActiveRecord интерпретирует «не время» как ноль, а не просто установку: window_end = «невремя"?То же самое преобразование в ноль происходит, когда вы также устанавливаете: window_end для int.
Причина, по которой это проблема для меня, заключается в том, что кто-то пытается сохранить не значение Time в: window_end (или:столбец window_start), я хотел бы выдать ошибку, но это не будет иметь место здесь.
Спасибо.