create() can accept :validate => false
before_callbacks are not halted when returning false
Moving furnitures around
Not doing the traditional behavior when it comes to before_validation callbacks

validation is done after the before_save/create/update callbacks.

People use before_save callbacks to change their data. It's sad to perform the
validations before they do so. Validation should be done right before touching
the database.

Now, the only place where one can change the data after it has been validated is
in after_validation(), but that's getting pretty explicit that some code is trying
to avoid validations.

Calling valid? after the before_save/create/update callbacks has at least one
downside: these callbacks are no longer running with validated data. This is not
such a bad issue, because in this case, the persist operation is likely to fail
(since the data is not valid anyway).