Yes this is an issue with `state_machine`. Using `save` as the action name triggers methods which run the state callbacks as ActiveRecord callbacks on the model, which means that they are *inside* the `save` transaction. To get around that, you rename `save` to `save_state` and alias the method itself. It seems to no longer be mentioned in the inline comments on state machine 1.2.0 but it was there in 1.1.2.