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...?

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

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