ActiveRecord uses confusing defaults

I think you raise a very valid point. What surprises me is that I don't remember AR acting up this way in older versions. Am I correct? Regardless... this is not an acceptable behavior. Defaults should be set at the table definition level if needed, not provided automagically w/o the option of preventing this behavior.

As you pointed out, this renders validates_presence_of useless in many cases.

Dado