Where to put the transaction?

Hi, I’m rewriting some really old code these days and I’m trying to
adhere to the “fat model, skinny controller” approach.

I’m wondering how much to actually stuff into the model, and if
there’s some rule of thumb. For example, I could do this in a
controller:

def controller_action
MyModel.transaction do
instance.do_stuff
instance.associated_thing.other_stuff
instance.save!
end
end

Or, I could put it all on the model instance:

def do_stuff
MyModel.transaction do
some_methods_here
associated_thing.other_stuff
save!
end
end

Any tips on what’s preferable and when/why?

Thanks.

Hello,

This is just a “me too” … I am just now comfortable enough with
rails to be able to accomplish a task both of those ways, and I have a
tough time figuring out when I should choose on or the other. The
Railscasts from http://railscasts.com/ are quite helpful, that’s how I
have been figuring it out.

Dustin