我是一个Rails和REST新手,我正在试图找出如何最好地公开由具有状态机的域对象支持的资源(换句话说是有限自动机).
我已经看到了许多用于使模型类成为状态机的宝石,例如aasm,过渡,工作流,但它们都没有记录它们如何在面向资源的控制器中实际使用的示例.它们似乎都暗示状态转换是由"事件"触发的,这实际上是一种方法调用.我对这意味着的一些问题是:
- 更新操作(PUT方法)不合适,因为PUT被认为是幂等的.唯一可能的是,如果州是作为代表的一部分发送的.这与"事件"不一致.它是否正确?
- 由于事件不是幂等的,因此必须使用POST.但是,到哪个资源?每个可能的事件都有子资源吗?或者,是否有一个(/ updatestate)将触发事件和事件的任何参数作为其表示?
- 由于资源的状态是由另一个资源可能触发的事件修改的,因此create action是否应接受对state属性(或依赖于状态机的任何其他属性)的更改?
- [更新的问题]在UI中公开转换的好方法是什么?由于事件不是状态,因此似乎允许更新状态属性(以及依赖于状态转换的任何其他属性)是没有意义的.这是否意味着在更新操作中应忽略这些属性?