Use after_commit hook to protect against data inconsistencies - closes #111