state-machines / state_machines-activerecord

StateMachines Active Record Integration
https://github.com/state-machines/state_machines-activerecord
MIT License
401 stars 83 forks source link

After transitions callback not working ? #87

Closed codemilan closed 4 years ago

codemilan commented 4 years ago

I have below state machine code in a model:

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:


r = Response.last
r.fire_answered
r.fire_review
codemilan commented 4 years ago

Sorry my mistake on understanding.