fix: timestamp will work with named machine

This commit is contained in:
Roland Studer 2021-04-23 00:10:24 +02:00 committed by Anil Kumar Maurya
parent 252ade3a20
commit ad8fa48c5f
3 changed files with 19 additions and 1 deletions

View File

@ -268,7 +268,7 @@ module AASM
after_all_transitions do
if self.class.aasm(:"#{aasm_name}").state_machine.config.timestamps
ts_setter = "#{aasm.to_state}_at="
ts_setter = "#{aasm(aasm_name).to_state}_at="
respond_to?(ts_setter) && send(ts_setter, ::Time.now)
end
end

View File

@ -0,0 +1,13 @@
class TimestampsWithNamedMachineExample
include AASM
attr_accessor :opened_at
aasm :my_state, timestamps: true do
state :opened
event :open do
transitions to: :opened
end
end
end

View File

@ -24,4 +24,9 @@ describe 'timestamps option' do
object.class.aasm.state_machine.config.timestamps = true
expect { object.open }.to change { object.opened_at }
end
it 'calls a timestamp setter when using a named state machine' do
object = TimestampsWithNamedMachineExample.new
expect { object.open }.to change { object.opened_at }.from(nil).to(instance_of(::Time))
end
end