state_machine 与 aasm gems for app ruby on Rails 3.2

问题描述 投票:0回答:1

我需要一个状态机用于消息私有系统和订单状态系统。

你可以看到这两颗宝石:

https://github.com/pluginaweek/state_machine

https://github.com/rubyist/aasm

已编辑..

我正在使用 mongoid 和 mongodb 数据库

什么宝石最适合这个功能?

ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.1 state-machine aasm
1个回答
15
投票

更新:

查看最近的 RailsCast:状态机之旅

需要提到的是,当您使用状态机时,可能会很难为处于无效状态的测试生成对象..

之前的回答:

这两个 gem 都运行良好,与 Mongoid 兼容,并且得到积极维护。

我过去使用过 AASM,它的存在时间有点长,但是 state_machine gem 有更多的功能和更多的选项。例如检查 state_machine 在基类上生成的方法(在其示例下方);您可以定义更多详细信息,例如转换回调、条件转换;您可以进行路径分析,甚至还有 GraphViz 生成器可以生成状态图的漂亮图片。

如果您只需要一个简单的状态机,您可以使用 AASM。如果您需要建模更多细节,例如条件转换或转换回调、路径分析、对状态进行大量查询,或者需要嵌套状态机,那么请使用 state_machine gem。

参考资料:

AASM:https://github.com/aasm/aasm

状态机: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

© www.soinside.com 2019 - 2024. All rights reserved.