I'm using the aasm (formerly acts_as_state_machine) gem in my rails 4 application. I have something like this on my Post model
...
aasm column: :state do
state :pending_approval, initial: true
state :active
state :pending_removal
event :accept_approval, :after => Proc.new { |user| binding.pry } do
transitions from: :pending_approval, to: :active
end
end
...
When I call @post.accept_approval!(:active, current_user) and the after callback gets triggered, in my console I can inspect what user is (that was passed into the Proc) and it's nil!
What's going on here? What is the correct way to call this transition?
Look aasm docs in section callbacks.
...
aasm column: :state do
state :pending_approval, initial: true
state :active
state :pending_removal
after_all_transition :log_all_events
event :accept_approval, after: :log_approval do
transitions from: :pending_approval, to: :active
end
end
...
del log_all_events(user)
logger.debug "aasm #{aasm.current_event} from #{user}"
end
def log_approval(user)
logger.debug "aasm log_aproove from #{user}"
end
You can call events with needed params:
@post.accept_approval! current_user
It works in the current version (4.3.0):
event :finish do
before do |user|
# do something with user
end
transitions from: :active, to: :finished
end
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With