我是Rails和REST的新手,我试图弄清楚如何最好地公开由具有状态机(换句话说就是有限自动机)的域对象支持的资源。
我见过许多让模型类成为状态机的瑰宝,例如aasm,过渡,工作流,但是它们都没有文档说明如何在面向资源的 Controller 中实际使用它们。它们似乎都暗示状态转换是由“事件”触发的,这实际上是一个方法调用。我对这意味着什么有一些疑问:
最佳答案
正确。
您可以同时使用两种方法。您可以在同一应用程序中同时支持这两种方法,事件类型的变化由传入文档或接收资源决定。就个人而言,我更愿意通过不同的文档类型来做到这一点,但这只是我的观点。如果您确实选择了多资源路线,请确保它们是可发现的(即,通过获取到其父资源时返回的文档中描述的指向它们的链接)。
由你决定;没有真正的理由为什么您必须密切注意创建时的任何特定属性。 (您可以通过说状态在创建后立即更改为状态机的适当初始状态来对此进行合理化。)在我完成的状态机中,无论如何都是通过POST进行创建的(而且是不同的-相当复杂-文档),因此整个过程尚无定论,但如果允许多个初始状态,则在创建文档中采用“这是我的首选起始状态”提示是有意义的。需要说明的是,仅仅因为用户想要,并不意味着您必须这样做。您是否愿意在拒绝用户建议时向用户投诉。
[股票答案。]
关于ruby-on-rails - 如何为状态机或有限自动机实现RESTful资源,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5591348/