加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 带参数回调后的aasm

发布时间:2020-12-17 03:06:28 所属栏目:百科 来源:网络整理
导读:我在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 { |u
我在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)并触发后回调时,在我的控制台中我可以检查用户是什么(传递给Proc),它是零!

这里发生了什么?这种过渡的正确方法是什么?

解决方法

在章节回调中查看aasm文档.

...
  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

您可以使用所需的参数调用事件:

@post.accept_approval! current_user

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读