I am curious why the additional save method instead hooking into the normal AR save on the model? To me, this doesn't scream 'obvious' api.

All things equal here, I would hook this in as a private to save.