Skip to content

Commit ad8fa48

Browse files
RolandStuderAnil Kumar Maurya
authored and
Anil Kumar Maurya
committed
fix: timestamp will work with named machine
1 parent 252ade3 commit ad8fa48

File tree

3 files changed

+19
-1
lines changed

3 files changed

+19
-1
lines changed

lib/aasm/base.rb

+1-1
Original file line numberDiff line numberDiff line change
@@ -268,7 +268,7 @@ def setup_timestamps(aasm_name)
268268

269269
after_all_transitions do
270270
if self.class.aasm(:"#{aasm_name}").state_machine.config.timestamps
271-
ts_setter = "#{aasm.to_state}_at="
271+
ts_setter = "#{aasm(aasm_name).to_state}_at="
272272
respond_to?(ts_setter) && send(ts_setter, ::Time.now)
273273
end
274274
end
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
class TimestampsWithNamedMachineExample
2+
include AASM
3+
4+
attr_accessor :opened_at
5+
6+
aasm :my_state, timestamps: true do
7+
state :opened
8+
9+
event :open do
10+
transitions to: :opened
11+
end
12+
end
13+
end

spec/unit/timestamps_spec.rb

+5
Original file line numberDiff line numberDiff line change
@@ -24,4 +24,9 @@
2424
object.class.aasm.state_machine.config.timestamps = true
2525
expect { object.open }.to change { object.opened_at }
2626
end
27+
28+
it 'calls a timestamp setter when using a named state machine' do
29+
object = TimestampsWithNamedMachineExample.new
30+
expect { object.open }.to change { object.opened_at }.from(nil).to(instance_of(::Time))
31+
end
2732
end

0 commit comments

Comments
 (0)