Update_attributes on multiple models, revert back on error


#1

Hi,

I have one method, ‘updateStuff’, that will call ‘update_attributes’
on 3 different models in the DB…

How can I account for validation to revert back all updates if one of
the models is not valid?

I’ve looked into Model.valid? which doesn’t seem to work for me …

Any idea?

Thanks


#2

Terpinator wrote:

I have one method, ‘updateStuff’, that will call ‘update_attributes’
on 3 different models in the DB…

How can I account for validation to revert back all updates if one of
the models is not valid?

Note that you want all-or-nothing DB updates, but, for purposes
of form redisplay, always want both in-memory attribute updates
and validity-checking done on each. Here’s how:

  1. Update attributes on each without saving using the attributes=
    method.
  2. Call valid? on each, storing each result in a local variable.
  3. Proceed with transaction-wrapped saves if all three variables are
    true.


Rails Wheels - Find Plugins, List & Sell Plugins -
http://railswheels.com


#3

that’s what i would do, too. but you said valid? is not working for
you. why is that? (where seems to be the problem?)