我需要一个状态机用于邮件专用系统和订单状态系统。
你可以看到这两个宝石:
https://github.com/pluginaweek/state_machine
https://github.com/rubyist/aasm
我正在使用mongoid与mongodb数据库
哪种宝石最适合此功能?
答案 0 :(得分:14)
<强>更新强>
查看最近的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