Module: Activerecord::Transactionable
- Extended by:
- ActiveSupport::Concern
- Defined in:
- lib/activerecord/transactionable.rb,
lib/activerecord/transactionable/result.rb,
lib/activerecord/transactionable/version.rb
Overview
SRP: Provides an example of correct behavior for wrapping transactions. NOTE: Rails’ transactions are per-database connection, not per-model, nor per-instance,
see: http://api.rubyonrails.org/classes/ActiveRecord/Transactions/ClassMethods.html
Defined Under Namespace
Modules: ClassMethods, Version Classes: Result
Constant Summary collapse
- DEFAULT_NUM_RETRY_ATTEMPTS =
2
- DEFAULT_ERRORS_TO_HANDLE_INSIDE_TRANSACTION =
[].freeze
- DEFAULT_ERRORS_PREPARE_ON_SELF_INSIDE =
[].freeze
- DEFAULT_ERRORS_TO_HANDLE_OUTSIDE_TRANSACTION =
[ActiveRecord::RecordInvalid].freeze
- DEFAULT_ERRORS_PREPARE_ON_SELF_OUTSIDE =
[ActiveRecord::RecordInvalid].freeze
- ERRORS_TO_DISALLOW_INSIDE_TRANSACTION =
These errors (and possibly others) will invalidate the transaction (on PostgreSQL and possibly other databases). This means that if you did rescue them inside a transaction (or a nested transaction) all subsequent queries would fail.
[ ActiveRecord::RecordInvalid, ActiveRecord::StatementInvalid, ActiveRecord::RecordNotUnique, ].freeze
- TRANSACTION_METHOD_ARG_NAMES =
%i[ requires_new isolation joinable ].freeze
- REQUIRES_NEW =
- INSIDE_TRANSACTION_ERROR_HANDLERS =
%i[ rescued_errors prepared_errors retriable_errors reraisable_errors num_retry_attempts ].freeze
- OUTSIDE_TRANSACTION_ERROR_HANDLERS =
%i[ outside_rescued_errors outside_prepared_errors outside_retriable_errors outside_reraisable_errors outside_num_retry_attempts ].freeze
- INSIDE_CONTEXT =
"inside"
- OUTSIDE_CONTEXT =
"outside"
Instance Method Summary collapse
Instance Method Details
#transaction_wrapper(**args, &block) ⇒ Object
287 288 289 |
# File 'lib/activerecord/transactionable.rb', line 287 def transaction_wrapper(**args, &block) self.class.transaction_wrapper(object: self, **args, &block) end |