2021/03/07 activerecord
ActiveRecordでNOT NULLなカラムに '0000-00-00' が入っていると IS NULLで取れてしまう問題を調べる
発生した現象
User.where("deleted_at IS NULL")
実際のMySQL上のデータは '0000-00-00'になっている
MySQLは5.7、StrictモードはOff
実際のコードは https://github.com/rails/rails/blob/main/activemodel/lib/active_model/type/helpers/time_value.rb#L48-L49
何故こんな実装を?
MySQL が null 扱いするんだよねぇ
なるほど〜luccafort.icon
IS NULL に引っかかるので、0000-00-00 のときは nil にしようというのが ActiveRecord の実装のはず