Check if within a transaction?

is it possible to / how can you check if you are currently within a
transaction?

I’d like a method to raise an error if it is called from outside of a
transaction, but run normally otherwise.

Checking the transaction documentation:

I don’t see a way to accomplish this…?

On 19 Mar 2011, at 19:30, GS [email protected] wrote:

is it possible to / how can you check if you are currently within a
transaction?

You could check connection.open_transactions
On postgres you can ask the adapter directly if my memory is correct

Fred

On Saturday 19 March 2011, GS wrote:

is it possible to / how can you check if you are currently within a
transaction?

I’d like a method to raise an error if it is called from outside of a
transaction, but run normally otherwise.

You could just wrap the code in your method in a transaction block. As
the docs say:

+transaction+ calls can be nested. By default, this makes all database
statements in the nested transaction block become part of the parent
transaction.

I.e., a nested transaction block does not result in a nested
transaction. If you want the latter, you have to use
transaction(:requires_new => true).

Michael


Michael S.
mailto:[email protected]
http://www.schuerig.de/michael/