state_machine initial: :created do
before_transition do |r, transition|
puts "********* this gets called*************"
r.disable_for_infinite_looping = true
end
after_transition do |r, transition|
puts "****** this gets called *******"
r.disable_for_infinite_looping = false
end
after_transition on: :fire_answered do |r|
puts "********* this is never called *************"
r.run_metrics
end
after_transition on: :fire_review do |r|
puts "********* this is never called *************"
r.run_review
end
event :fire_sent do
transition from: [:created, :sent], to: :sent
end
event :fire_review do
transition from: [:sent, :answered], to: :review
end
event :fire_answered do
transition from: [:sent, :review, :answered], to: :answered
end
state :sent do
validates_presence_of :sent_time
end
state :answered do
validates_presence_of :response_time
end
end
first two before and after transitions callbacks are called but after_transition on: :fire_answered and after_transition on: :fire_review are never called but when first "after_transition do |r, transition|" is removed then "after_transition on: :fire_answered and after_transition on: :fire_review" are called when I do below code:
I have below state machine code in a model:
first two before and after transitions callbacks are called but after_transition on: :fire_answered and after_transition on: :fire_review are never called but when first "after_transition do |r, transition|" is removed then "after_transition on: :fire_answered and after_transition on: :fire_review" are called when I do below code: