strange behaviour in ActiveRecord transaction

I'm using an ActiveRecord transaction in a Rails app,
and one of the changes made during the transaction is reverted
as the transaction finishes, whilst the other changes are preserved.
The code is like:

it's Rails 2.3.2 on Windows (Vista).

Perhaps some validation fails on self. Try save! To raise an exception