Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Ruby state\u机器gem和状态持久性-我遗漏了什么吗?_Ruby On Rails_Ruby_State Machine - Fatal编程技术网

Ruby on rails Ruby state\u机器gem和状态持久性-我遗漏了什么吗?

Ruby on rails Ruby state\u机器gem和状态持久性-我遗漏了什么吗?,ruby-on-rails,ruby,state-machine,Ruby On Rails,Ruby,State Machine,我希望在我的一个模型中实现一个状态机,我一直在考虑状态机gem,它似乎很流行,并且似乎有一个很好的、简单的API 无论如何,似乎没有持久化模型状态的概念,因为文档没有说明使用ActiveRecord或任何其他支持的ORM将状态映射到DB属性的任何方法。我希望从DB加载一个对象,检查其状态(如果需要),并根据其状态允许发生某些事件/转换 我是完全错过了什么,还是没有办法保持目前的状态? 如果不是,瞬态如何对状态随时间变化的持久化模型有用? 我应该使用一个不同的插件,一个更适合工作流的插件吗? 就文

我希望在我的一个模型中实现一个状态机,我一直在考虑状态机gem,它似乎很流行,并且似乎有一个很好的、简单的API

无论如何,似乎没有持久化模型状态的概念,因为文档没有说明使用ActiveRecord或任何其他支持的ORM将状态映射到DB属性的任何方法。我希望从DB加载一个对象,检查其状态(如果需要),并根据其状态允许发生某些事件/转换

我是完全错过了什么,还是没有办法保持目前的状态? 如果不是,瞬态如何对状态随时间变化的持久化模型有用? 我应该使用一个不同的插件,一个更适合工作流的插件吗?
就文档而言,状态机库可以处理任何属性,无论是使用attr_访问器创建的属性、@实例变量还是数据库列。但是,如果进行了任何更改,您似乎有责任调用记录上的save。

由于状态机是使用名称空间定义的,并且状态本身是符号,因此我看不到像您所说的状态机和属性之间的映射。不过,我明白您的意思。在中,我刚刚找到了以下配置选项::attribute-用于存储状态值的属性的名称。默认情况下,这与机器的名称相同。在将状态机更改为使用持久化属性,然后调用save之后,我看到ActiveRecord现在正在保存状态值。我刚刚在单元测试中确认,在使用ActiveRecord时,不需要调用save来更新持久化状态。任何转换似乎都会导致数据库立即更新。