diff --git a/lib/persistence/active_record_persistence.rb b/lib/persistence/active_record_persistence.rb index 11e0782..1fcbf09 100644 --- a/lib/persistence/active_record_persistence.rb +++ b/lib/persistence/active_record_persistence.rb @@ -5,6 +5,10 @@ module AASM base.extend AASM::Persistence::ActiveRecordPersistence::ClassMethods base.send(:include, AASM::Persistence::ActiveRecordPersistence::WriteState) unless base.method_defined?(:aasm_write_state) base.send(:include, AASM::Persistence::ActiveRecordPersistence::ReadState) unless base.method_defined?(:aasm_read_state) + + base.before_save do |record| + record.send("#{record.class.aasm_column}=", record.aasm_current_state.to_s) + end end module ClassMethods @@ -12,23 +16,20 @@ module AASM if column_name @aasm_column = column_name.to_sym else - @aasm_column + @aasm_column ||= :aasm_state end end end module WriteState def aasm_write_state(state) - @aasm_column ||= :aasm_state - - update_attribute(@aasm_column, state.to_s) + update_attribute(self.class.aasm_column, state.to_s) end end module ReadState def aasm_read_state - @aasm_column ||= :aasm_state - send(@aasm_column).to_sym + new_record? ? self.class.aasm_initial_state : send(self.class.aasm_column).to_sym end end end