我在我的rails 4应用程序中使用了aasm(以前是acts_as_state_machine
)gem。我的Post
机型上有这样的东西
...
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
...
当我调用@post.accept_approval!(:active, current_user)
并且After回调被触发时,我可以在我的控制台中检查user
是什么(它被传递到proc中),它是nil
!
这里发生了什么事?什么才是这一转变的正确叫法?
4条答案
按热度按时间nimxete21#
在回调一节中查看AASM文档。
您可以使用所需的参数调用事件:
pgky5nke2#
适用于当前版本(4.3.0):
agxfikkp3#
post.accept_approval!{post.set_approvaler(current_user)}
BLOCK到BANG方法将在转换成功后调用,如果任何活动记录操作,它将被 Package 到转换事务中,您可以要求锁定以防止选项
requires_lock: true
出现并发问题。dldeef674#
将
:after
移至transitions
部分,以便:那就叫它
@post.accept_approval!(current_user)