10

我需要一个用于消息私有系统和订单状态系统的状态机。

你可以看到这两个宝石:

https://github.com/pluginaweek/state_machine

https://github.com/rubyist/aasm

编辑..

我正在将 mongoid 与 mongodb 数据库一起使用

什么宝石最适合此功能?

4

1 回答 1

14

更新:

查看最近的 RailsCast:状态机之旅

上一个答案:

这两个 gem 运行良好,与 Mongoid 兼容,并且得到积极维护。

我过去使用过 AASM,它的使用时间更长,但是 state_machine gem 具有更多的功能和更多的选项。例如检查 state_machine 在基类上生成的方法(在他们的例子下面);您可以定义更多细节,例如转换回调、条件转换;您可以进行路径分析,甚至还有一个 GraphViz 生成器来生成状态图的精美图片。

如果您只需要一个简单的状态机,则可以使用 AASM。如果您需要建模更多细节,例如条件转换或转换回调、路径分析、对状态进行大量查询,或者需要嵌套状态机,那么请使用 state_machine gem。

参考:

AASM:https ://github.com/aasm/aasm

state_machine:https ://github.com/pluginaweek/state_machine

关于 state_machine 的附加信息:

http://www.pluginaweek.org/2009/03/08/state_machine-one-machine-to-rule-them-all/

http://rdoc.info:8080/github/pluginaweek/state_machine/master/StateMachine/Machine

于 2012-10-02T18:50:01.250 回答