我需要为消息私人系统和订单状态系统创建一个状态机。
你可以查看这两个代码库:
你可以查看这两个代码库:
https://github.com/pluginaweek/state_machine
https://github.com/rubyist/aasm
编辑..
我正在使用mongoid和mongodb数据库。
哪个gem最适合这些功能?
https://github.com/pluginaweek/state_machine
https://github.com/rubyist/aasm
我正在使用mongoid和mongodb数据库。
哪个gem最适合这些功能?
更新:
请查看最近的RailsCast:状态机之旅
之前的回答:
这两个gems都非常好用,与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