Module: SuperForm::AtomicSave
- Extended by:
- ActiveSupport::Concern
- Included in:
- Reform
- Defined in:
- lib/super_form/concerns/atomic_save.rb
Constant Summary collapse
- ReformAtomicSaveError =
Class.new(StandardError)
Instance Method Summary collapse
- #save_with_transaction(params = {}, &block) ⇒ Object
- #save_with_transaction!(params = {}, &block) ⇒ Object
Instance Method Details
#save_with_transaction(params = {}, &block) ⇒ Object
37 38 39 40 41 42 43 |
# File 'lib/super_form/concerns/atomic_save.rb', line 37 def save_with_transaction(params={}, &block) begin save_with_transaction!(params, &block) rescue ReformAtomicSaveError false end end |
#save_with_transaction!(params = {}, &block) ⇒ Object
45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 |
# File 'lib/super_form/concerns/atomic_save.rb', line 45 def save_with_transaction!(params={}, &block) run_callbacks :transaction do ActiveRecord::Base.transaction do run_callbacks :queries do # 1. do validate data run_callbacks :validations do if validate(params) == false raise ReformAtomicSaveError, "Not Validate => #{self.errors..inspect}" end end # 2. sync to model sync # 2. define how to store data in block yield if block_given? # 3. save all data save! end end end true end |