Joe*_*oks 5 ruby ruby-on-rails aasm ruby-on-rails-3 ruby-on-rails-4
我们在 Rails 应用程序中使用act_as_state_machine (AASM)来控制模型在传统有限状态机中从一个状态到下一个状态的流程。我们正在为我们的应用程序构建一个 API,作为其中的一部分,我们希望能够在基于updateAPI 用户传递给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
Run Code Online (Sandbox Code Playgroud)
一种选择是使用远程过程调用 (RPC) 样式,我们提供/model/{ID}/publish并/model/{ID}/retire样式化端点。这是相当直接的,但不是很 RESTful。
我们考虑的另一个选项是检查参数并根据state模型的传入属性进行转换。这感觉像是一种“更好”的方法,因为我们的 API 对消费者来说更简单,但它在逻辑方面给控制器增加了很多复杂性。
为 Rails API 实现触发 AASM 状态事件的最佳方法是什么?我们错过了一个选择吗?
就我个人而言,我倾向于使用两种调用 - 直接类 REST 调用和状态转换,最常见的一种是启用?我会使用最直观的方法,而不用担心它是非 RESTful 的,特别是因为我发现状态转换可以有一组不同的逻辑。换句话说,RPC 风格
| 归档时间: |
|
| 查看次数: |
482 次 |
| 最近记录: |