我需要一个状态机用于消息私人系统和订单状态系统.
你可以看到这两个宝石:
https://github.com/pluginaweek/state_machine
https://github.com/rubyist/aasm
编辑..
我正在使用mongoid与mongodb数据库
什么宝石最适合这个功能?
解决方法
更新:
查看最近的RailsCast:A Tour of State Machines
上一个答案:
两个宝石的工作都很好,与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