Thinking completely off the top of my head (e.g., none of this has actually been run), I'd say you could hook into the status writer and set a flag for later use in a before_save callback.
before_save :handle_newly_blocked
def status=(new_status)
if self.status == 'active' && new_status == 'blocked'
@newly_blocked = true
end
write_attribute(:status, new_status)
end
def handle_newly_blocked
if @newly_blocked
# .. handle it ..
end
end
Sorry for the late response, but I couldn't resist telling you to look
at the acts_as_state_machine plugin. It lets you program transition
logic like you're describing declaratively.