Describe the bug
Currently the callbacks such as after_discard are run outside of the discarded model's transaction. This can lead to unexpected behavior where, for example, the model is discarded but its' associations discarded in the after_discard callback are not.