unexpected behavior of before_validation

Today I found these comments in active record's callbacks.rb file:

  # If the returning value of a before_validation callback can be evaluated to false, the process will be aborted and Base#save will return false.   # If Base#save! is called it will raise a RecordNotSave error.   # Nothing will be appended to the errors object.

This caused me a lot of frustration earlier when I was trying to get a model with the following code to save:

  before_validation :ensure_boolean_value_for_finalized

  private   def ensure_boolean_value_for_finalized     self.finalized = false unless self.finalized   end

I'm wondering why before_validation will abort the process of saving. My conception of before_validation was that its purpose was only to prepare the model object for validation, and that its purpose was *not* to do pre-validation validation.

It's not a huge deal - I'm just wondering what the logic behind before_validation's behavior is.

Daniel http://www.hallwaytesting.com