Rails is wrong in its coercion of empty dates to nil and requiring a
table field to allow NULL as the only alternative to a valid date entry.
NULL = unknown, unavailable, "still waiting" etc.
It's a well established discussion that NULL is needed to allow that
third option to zero and non-zero, empty and non-empty.
Rails is wrong in insisting that logic does not extend to dates.
A valid date = an affirmative akin a non-empty string, a non-zero
A 0000-00-00 is an affirmative akin to an empty string, or a zero.
NULL is the _third_ option.
A valid date says an event happened. A NULL says we're still waiting for
confirmation that the event happened. A 0000-00-00 says that the event
did not happen, never will happen. It is not "unknown." It is not
Rails is wrong in asserting that 0000-00-00 is poor database design, and
Rails is wrong to prevent the value from being used.