Save callbacks are not triggered when save is called unless something in the model has changed. This is incorrect, dirty tracking should only limit sending data to the server, not the save process itself.
Setting the disable_dirty attribute to true on the model before the save is called gets around this issue:
self.disable_dirty = true
@active = value