Module: WellFormed::Transactional::ClassMethods
- Defined in:
- lib/well_formed/transactional.rb
Instance Method Summary collapse
Instance Method Details
#after_save_commit(*args, &block) ⇒ Object
11 12 13 14 15 16 17 18 19 20 21 22 23 |
# File 'lib/well_formed/transactional.rb', line 11 def after_save_commit(*args, &block) require "active_record" if block set_callback(:save_commit, :after) do ::ActiveRecord.after_all_transactions_commit { instance_exec(&block) } end else method_name = args.shift set_callback(:save_commit, :after, *args) do ::ActiveRecord.after_all_transactions_commit { send(method_name) } end end end |
#save_within_transaction ⇒ Object
25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
# File 'lib/well_formed/transactional.rb', line 25 def save_within_transaction require "active_record" set_callback(:save, :around) do |form, block| saved = false form.resource.class.transaction do catch(:abort) do block.call saved = true end raise ActiveRecord::Rollback unless saved end throw(:abort) unless saved end end |