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