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
48 49 50 51 52 53 54 |
# File 'lib/super_form/concerns/atomic_save.rb', line 48 def save_with_transaction(params={}, &block) begin save_with_transaction!(params, &block) rescue ReformAtomicSaveError false end end |
#save_with_transaction!(params = {}, &block) ⇒ Object
56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 |
# File 'lib/super_form/concerns/atomic_save.rb', line 56 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.}" end end # 2. sync to model sync # 3. define how to store data in block yield if block_given? # 4. save all data save! end end end true end |