我需要一个用于消息专用系统和订单状态系统的状态机。
您可以看到以下两个宝石:
https://github.com/pluginaweek/state_machine
https://github.com/rubyist/aasm
编辑..
我在mongodb数据库中使用mongoid
哪种宝石最适合此功能?
最佳答案
更新:
查看最近的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