Module: BetterService::Concerns::Serviceable::Transactional
- Extended by:
- ActiveSupport::Concern
- Included in:
- Services::Base
- Defined in:
- lib/better_service/concerns/serviceable/transactional.rb
Overview
Provides transaction wrapping for service execution
This concern is PREPENDED (not included) to Services::Base to wrap the process method in a database transaction when enabled.
Defined Under Namespace
Modules: ClassMethods
Class Method Summary collapse
-
.prepended(base) ⇒ Object
Hook for prepend - sets up class attributes and class methods.
Instance Method Summary collapse
-
#process(data) ⇒ Object
Override process to wrap in transaction if enabled.
Class Method Details
.prepended(base) ⇒ Object
Hook for prepend - sets up class attributes and class methods
19 20 21 22 |
# File 'lib/better_service/concerns/serviceable/transactional.rb', line 19 def self.prepended(base) base.class_attribute :_with_transaction, default: false base.extend(ClassMethods) end |
Instance Method Details
#process(data) ⇒ Object
Override process to wrap in transaction if enabled
44 45 46 47 48 49 50 51 52 |
# File 'lib/better_service/concerns/serviceable/transactional.rb', line 44 def process(data) return super(data) unless self.class._with_transaction result = nil ActiveRecord::Base.transaction do result = super(data) end result end |