Unifying the observer notifications using the transition object in the after_transition hook. Also isolated better some observer logic regarding notifications.
removed duplicated logic and moved to a private method
I don't think is worth keeping this method for using it only twice and actually we spare only one negation, since the other if could be used as unless. KISS
we dont need the dependent: destroy because we dont actually destroy projects anymore, now this associations can be done via schema_associations
should_fail? cannot be private because its called from the state_machine :(