Class: SimpleWallet::AccountCreditingService
- Defined in:
- app/services/simple_wallet/account_crediting_service.rb
Instance Method Summary collapse
-
#credit(set_transaction_isolation_level: true) ⇒ Object
Use set_transaction_isolation_level: false to avoid getting this exception: ActiveRecord::TransactionIsolationError (cannot set isolation when joining a transaction).
-
#initialize(account:, amount: nil, source: nil, note: nil) ⇒ AccountCreditingService
constructor
A new instance of AccountCreditingService.
Methods inherited from Service
Constructor Details
#initialize(account:, amount: nil, source: nil, note: nil) ⇒ AccountCreditingService
Returns a new instance of AccountCreditingService.
6 7 8 9 10 11 |
# File 'app/services/simple_wallet/account_crediting_service.rb', line 6 def initialize(account:, amount: nil, source: nil, note: nil) @account = account @amount = amount @source = source @note = note end |
Instance Method Details
#credit(set_transaction_isolation_level: true) ⇒ Object
Use set_transaction_isolation_level: false to avoid getting this exception:
ActiveRecord::TransactionIsolationError (cannot set isolation when joining a transaction)
15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
# File 'app/services/simple_wallet/account_crediting_service.rb', line 15 def credit(set_transaction_isolation_level: true) # Setting transaction isolation level in tests is problematic due to nested transactions :| isolation_level = (::Rails.env.test? || !set_transaction_isolation_level) ? nil : :serializable ActiveRecord::Base.transaction(isolation: isolation_level) do return false unless valid? unless crediting_transaction.valid? copy_errors_from(crediting_transaction) return false end crediting_transaction.save! after_operation end true end |