gpt4 book ai didi

ruby-on-rails - 在 Rails API Controller 中使用 AASM 的最佳实践

转载 作者:数据小太阳 更新时间:2023-10-29 07:37:25 25 4
gpt4 key购买 nike

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

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

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 对消费者而言更简单,但它在逻辑方面给 Controller 增加了很多复杂性。

为 Rails API 实现 AASM 状态事件触发的最佳方法是什么?我们缺少一个选项吗?

最佳答案

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

关于ruby-on-rails - 在 Rails API Controller 中使用 AASM 的最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41453781/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com