# ActiveRecord transactions & thread safety

**URL:** <https://discuss.rubyonrails.org/t/activerecord-transactions-thread-safety/69102>\
**Category:** rubyonrails-talk\
**Created:** [June 3, 2014, 4:32am UTC](https://discuss.rubyonrails.org/t/activerecord-transactions-thread-safety/69102 "2014-06-03T04:32:57Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![Alexey\_Chernenkov](https://avatars.discourse-cdn.com/v4/letter/a/58956e/32.png) [@Alexey\_Chernenkov](https://discuss.rubyonrails.org/u/Alexey_Chernenkov)\
**Post date:** [June 3, 2014, 4:32am UTC](https://discuss.rubyonrails.org/t/activerecord-transactions-thread-safety/69102/1 "2014-06-03T04:32:57Z")

</div>

My question is about AR transactions feature. Is it thread safe? Is it safe to use both ` **ActiveRecord::Base.transaction do ...** ` and ` **Account.transaction do ...** ` statements?

I plan to use Puma as web server, and Sidekiq for background processing.

Is there some tricks I should know about?

Thanks!

---

<div class="post-metadata">

**Author:** ![Frederick\_Cheung](https://sea2.discourse-cdn.com/rubyonrails/user_avatar/discuss.rubyonrails.org/frederick_cheung/32/3901_2.png) [@Frederick\_Cheung](https://discuss.rubyonrails.org/u/Frederick_Cheung)\
**Post date:** [June 3, 2014, 7:11am UTC](https://discuss.rubyonrails.org/t/activerecord-transactions-thread-safety/69102/2 "2014-06-03T07:11:18Z")

</div>

> My question is about AR transactions feature. Is it thread safe? Is it safe to use both `ActiveRecord::Base.transaction do ...` and `Account.transaction do ...` statements?

It should be - a connection is only ever used by 1 thread at a time (and unless you have configured Account to use a separate connection then AR won't be default create nested transactions/save points )If you could show in more detail what you are doing then a more considered reply might be possible.

Fred
