【问题标题】:Best Practices for using AASM in a Rails API Controller在 Rails API 控制器中使用 AASM 的最佳实践
【发布时间】:2017-01-03 23:11:30
【问题描述】:

我们在 Rails 应用程序中使用 acts_as_state_machine (AASM) 来控制模型在传统有限状态机中从一个状态到下一个状态的流程。我们正在为我们的应用程序构建一个 API,作为其中的一部分,我们希望能够根据 API 用户传递给 update Controller 方法的状态更新 Rails 模型时触发状态转换.

状态机的简化版本如下所示:

aasm :column => :state do
    state :proposed, :initial => true
    state :published
    state :retired

    event :publish do
      transitions :from => :proposed, :to => :published
    end

    event :retire do
      transitions :from => :published, :to => :retired
    end
end

一种选择是使用远程过程调用 (RPC) 风格,我们提供 /model/{ID}/publish/model/{ID}/retire 风格的端点。这是相当直接的,但不是很 RESTful。

我们考虑过的另一个选项是检查参数并根据模型的传入state 属性进行转换。这感觉像是一种“更好”的方法,因为我们的 API 对消费者来说更简单,但它在逻辑方面给控制器增加了很多复杂性。

为 Rails API 实现 AASM 状态事件触发的最佳方式是什么?我们错过了一个选择吗?

【问题讨论】:

    标签: ruby-on-rails ruby ruby-on-rails-3 ruby-on-rails-4 aasm


    【解决方案1】:

    就我个人而言,我倾向于进行两种调用——直接的类 REST 调用和状态转换,最常见的是启用?我会使用最直观的东西,而不用担心它是非 RESTful esp,因为我发现状态转换可以有一组不同的逻辑。换句话说,RPC - 风格

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-08-12
      • 1970-01-01
      • 2015-08-26
      • 2018-07-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-24
      相关资源
      最近更新 更多