検証をテストしているときに、この特異性に遭遇しました。移行は次のように定義されています。
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 = "not a time" を設定するのではなく、"not a time" を nil と解釈するのはなぜですか? :window_end を int に設定すると、同じ nil への変換が発生します。
これが私にとって問題である理由は、誰かが Time 以外の値を :window_end (または :window_start) 列に保存しようとすると、エラーがスローされるようにしたいのですが、ここではそうではありません。
ありがとう。