já que estamos numa de meta-programming, esta condição podia ficar fora do define_method, e declaravas duas versões do método, cada um de uma só linha.
com ActiveRecord `update_attributes state: state_name`
sem `self.state = state_name`