callbacks AASM 3 begin old_state exit # old? should be deprecated -> use old_state.before_exit instead event before old_state before_exit new_state before_enter new_state enter # old? should be deprecated -> use new_state.before_enter instead ...update state... transition guard event guard transition on_transition event success # if persist successful old_state after_exit new_state after_enter event after rescue event error end AASM 4 todo done - move event.before before everything else - move old_state.before_exit before old_state.exit - move event.guard before transition.guard - fire guards before running state callbacks (test run) begin event before event guard # test run transition guard # test run old_state before_exit old_state exit new_state before_enter new_state enter event guard transition guard transition on_transition ...update state... event success # if persist successful old_state after_exit new_state after_enter event after rescue event error end