# Transaction question

**URL:** <https://www.ruby-forum.com/t/transaction-question/78140>\
**Category:** Rails\
**Created:** [March 8, 2006, 12:19am UTC](https://www.ruby-forum.com/t/transaction-question/78140 "2006-03-08T00:19:36Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![jeff\_cole](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/ecc23a/32.png) [@jeff\_cole](https://www.ruby-forum.com/u/jeff_cole)\
**Post date:** [March 8, 2006, 12:19am UTC](https://www.ruby-forum.com/t/transaction-question/78140/1 "2006-03-08T00:19:36Z")

</div>

How does one set up a transaction for multiple models? For example, how  
do you wrap the entire logic below in one transaction?

#begin transaction  
for bar in foo.bars  
bar.something += 1  
bar.save  
end

foo.something += 1  
foo.save  
#end transaction

For even more complexity, what if a mail notification is sent for each  
bar modified in the collection?

thanks,  
Jeff

---

<div class="post-metadata">

**Author:** ![jeff\_cole](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/ecc23a/32.png) [@jeff\_cole](https://www.ruby-forum.com/u/jeff_cole)\
**Post date:** [March 8, 2006, 1:44am UTC](https://www.ruby-forum.com/t/transaction-question/78140/2 "2006-03-08T01:44:32Z")

</div>

Can you do:

Bar.transaction  
foo.bars.each do |bar|  
bar.something += 1  
bar.save  
end  
end

-Jonny.

---

<div class="post-metadata">

**Author:** ![jeff\_cole](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/ecc23a/32.png) [@jeff\_cole](https://www.ruby-forum.com/u/jeff_cole)\
**Post date:** [March 8, 2006, 10:15pm UTC](https://www.ruby-forum.com/t/transaction-question/78140/3 "2006-03-08T22:15:25Z")

</div>

Yes, you can.

–  
– Tom M.

---

<div class="post-metadata">

**Author:** ![jeff\_cole](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/ecc23a/32.png) [@jeff\_cole](https://www.ruby-forum.com/u/jeff_cole)\
**Post date:** [March 8, 2006, 6:06pm UTC](https://www.ruby-forum.com/t/transaction-question/78140/4 "2006-03-08T18:06:44Z")

</div>

I want the change to foo wrapped in the same transaction. I don’t think  
you can stick that in Bar.transaction?

-Jeff

---

<div class="post-metadata">

**Author:** ![jeff\_cole](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/ecc23a/32.png) [@jeff\_cole](https://www.ruby-forum.com/u/jeff_cole)\
**Post date:** [April 19, 2007, 8:59am UTC](https://www.ruby-forum.com/t/transaction-question/78140/5 "2007-04-19T08:59:29Z")

</div>

Hi Tom,

```
How do you do it ? Jonny's example seems vague... I need both model 

```

to be save!

Thanks.

Tom M. wrote:

> Yes, you can.
> 
> –  
> – Tom M.
