module WriteState # Writes state to the state column and persists it to the database # using update_attribute (which bypasses validation) # # foo = Foo.find(1) # foo.aasm_current_state # => :opened # foo.close! # foo.aasm_current_state # => :closed # Foo.find(1).aasm_current_state # => :closed # # NOTE: intended to be called from an event def aasm_write_state(state) old_value = read_attribute(self.class.aasm_column) write_attribute(self.class.aasm_column, state.to_s) unless self.save(false) write_attribute(self.class.aasm_column, old_value) return false end true end end