Ruby on Rails 3.2应用中的状态机和AASM宝石(gems)相比有什么区别?

10

1
任何一种都可以,它们都是状态机宝石,与activerecord很好地配合使用,正在积极维护和广泛使用。我认为你无论选择哪一个都不会错。我两种都用过,但通常更喜欢pluginaweek状态机宝石的语法。 - Geoff Lanotte
1个回答

14

更新:

请查看最近的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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接