首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >状态机after_transition回调不用于更新

状态机after_transition回调不用于更新
EN

Stack Overflow用户
提问于 2016-10-10 07:05:23
回答 2查看 2K关注 0票数 1

我使用的是Rails-4.2.6、state _Mach-1.2.0和Ruby-2.3,我已经在订单模型上定义了状态机。如下所示

代码语言:javascript
复制
  state_machine :status, initial: :initiated do
    after_transition on: :succeeded, do: :oderable_success_callback
    event :pending do
      transition initiated: :pending
    end

    event :failed do
      transition [:initiated, :pending] => :failed
    end

    event :succeeded do
      transition [:initiated, :pending] => :succeeded
    end
  end

  def oderable_success_callback
    orderable.successful_payment
  end

当我按如下方式更新顺序时,将触发after_transition回调。

order.succeeded

但是,当我更新订单时,它不会触发回调

代码语言:javascript
复制
order.update(status: 'succeeded')

status被更新为“succeeded”,,但未能触发回调.

如何在普通after_transition上触发update回调。

EN

回答 2

Stack Overflow用户

发布于 2016-10-10 07:58:04

order.update将不会触发after_transition回调。如果您想要检测列上的更改。您可以使用模型的after_update回调。

代码语言:javascript
复制
class Order < ActiveRecord::Base
  after_update :tasks
  def tasks
    if(self.status_changed? && status == 'succeeded')
      oderable_success_callback
    end
  end
end
票数 1
EN

Stack Overflow用户

发布于 2016-10-10 08:59:08

我根据状态进行了多次回调,并避免了多次if/else,如下所示,

代码语言:javascript
复制
 after_update :orderable_callback

 state_machine :status, initial: :initiated do
    event :pending do
      transition initiated: :pending
    end

    event :failed do
      transition [:initiated, :pending] => :failed
    end

    event :succeeded do
      transition [:initiated, :pending] => :succeeded
    end

    state :pending do
      def orderable_callback
        orderable.pending_payment
      end
    end

    state :failed do
      def orderable_callback
        orderable.failed_payment
      end
    end

    state :succeeded do
      def orderable_callback
        orderable.successful_payment
      end
    end
  end
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39952847

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档