Hi everybody,
In my code I use a transaction to ensure that an update takes place on two tables at the same time:
begin Transfer.transaction do transfer.save! user.save! end rescue #handle errors end
At the moment I do this in my controller, but since it is actually an action on my model, this feels wrong. I think I should create a new method on my model that saves itself and the other model using a transaction. So e.g.:
class Transfer < ActiveRecord::Base def save_with_user_update Transfer.transaction do transfer.save! user.save! end return true rescue #handle errors return false end end
Would this be considered good practice? Should I also mark save and save! as protected to enforce the use of my own method? Or to take it one step further: I could alias the regular save and save! and replace them by my own versions. Maybe that's a bit too much tinkering?
I'm a Rails newbie, so I'm interested to hear what more experienced developers think about this. Am I on the right track?
cheers, Kees-Jochem