has_many transaction rollback problem

I have bellow one model has many other model.

The question is when i update 2 models. One model is validate failed. The other model can not rollback.

Sample:

class User < ActiveRecord::Base   has_many :products, :dependent => :destroy   validates_presence_of :name end

class Product < ActiveRecord::Base   belongs_to :user end

# do a update

User.transaction do   user = User.find(1)   p user.products # => [#product1,#product2]   user.products = [#product3, #product4]   user.name = ""   user.save end

=> validate error: Name can't be blank

But when you run bellow. user = User.find(1) p user.products # => [#product3,#product4]

How can i resolve this problem? I don't need products are updated.

I use .mysql innoDB .Rails 3.0.3 .activerecord (3.0.3)

The save is wrapped in a save point which should be rolled back, however when you assign to a has_many like that the change is made straightaway to the products. You could raise ActiveRecord::Rollback to force the outermost transaction to be rolled back

Fred