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)

On Dec 15, 9:04am, Grant [email protected] wrote:

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.

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

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs