Sha256: 0ddf58e743817d0e95edf47f234961b37efa92baf8fcfae3777f0f4b542d81ee
Contents?: true
Size: 1.43 KB
Versions: 10
Compression:
Stored size: 1.43 KB
Contents
class Card before_validation :validation_phase, if: -> { validation_phase_callback? } around_save :storage_phase after_commit :integration_phase, if: -> { integration_phase_callback? } class Director # Validation, Storage, and Integration phase handling module Phases def validation_phase_callback? !@only_storage_phase && head? end def integration_phase_callback? !@only_storage_phase && main? end def prepare_for_phases @card.prepare_for_phases unless running? @running = true @subdirectors.each(&:prepare_for_phases) end def validation_phase run_stage :initialize run_stage :prepare_to_validate run_stage :validate ensure @card.errors.empty? end # Unlike other phases, the storage phase takes a block, # because it is called by an "around" callback def storage_phase &block catch_up_to_stage :prepare_to_store run_stage :store, &block run_stage :finalize raise ActiveRecord::RecordInvalid, @card if @card.errors.any? ensure @from_trash = nil end def integration_phase return if @abort @card.restore_changes_information run_stage :integrate run_stage :after_integrate run_stage :integrate_with_delay ensure @card.clear_changes_information unless @abort end end end end
Version data entries
10 entries across 10 versions & 1 rubygems