问题标签 [aasm]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ruby-on-rails - 在 Controller 中重构 before_filters
我正在开发一个 Rails 应用程序,该应用程序在 users_controller 中有一大堆过滤器,这些过滤器查找由 Acts as State Machine 提供的用户的有状态角色。它们看起来像这样:
通过对用户控制器控制的每个操作的所有这些状态检查,性能成为一个问题,对用户列的 SQL 查询在我的机器上花费了 5 毫秒以上。
我只是假设所有这些过滤器都在拖动性能中起作用,我想知道如何最好地重构这些过滤器以改善从数据库中读取。
ruby-on-rails - 用 AASM 停止过渡的最佳方法是什么
当在成功调用方法或进入状态转换阶段抛出错误时,捕获此错误并确保状态恢复到先前状态的最佳方法是什么。
我正在使用 AASM gem。
ruby-on-rails - 使用 rubyist-aasm 持久化状态列(充当状态机)
在使用 aasm 进行转换时将对象的状态保存到数据库的最佳方法是什么?我原以为这会自动发生,但事实并非如此。
(编辑:当我手动保存对象时,状态列确实会更新。但是在转换时不会保存。)
对于这个插件,我找不到太多有用的文档,因此,如果您有关于具有更好文档的替代有限状态机实现的建议,那也可能会有所帮助。
ruby-on-rails - 在 Rails 上验证有限状态机(使用 AASM)
我正在使用Rubyist的 AASM 为 AR 对象构建一个 4 步向导。根据对象的状态,需要进行不同的验证。根据某个转换的状态来验证对象的最聪明的方法是什么?
ruby-on-rails - AASM 宝石被 Rails 2.3.2 破坏?
有没有人在使用带有 Rails 2.3.2的AASM状态机 Gem 时遇到任何问题?它对我来说工作正常,但现在给出NoMethodError
:
这是我的模型中使用 AASM 的相关代码:
请注意,我的表state
中有该列comments
。
- 任何想法为什么它不再起作用?
ruby-on-rails - 在使用 Factory Girl 工厂进行测试时,如何覆盖 AASM 中的 :set_initial_state?
更新
下面回答。如果链接的站点消失,您可以使用 mocha 来存根初始状态并防止覆盖,如 ...
原始问题
我目前正在运行 Acts As State Machine Rails 插件(顺便说一句,它节省了大量时间)并且在与 Factory Girl 一起使用它时遇到了一些挑战(也很棒)。
我希望能够在使用工厂创建对象时设置对象状态。问这个问题的一种通用方法是“在使用工厂创建对象时如何调用类方法?”
我可以随时调用 t.activate!每个测试中的方法,但这会使我的测试变得脆弱。我正在寻找一种在工厂创建级别运行此方法或将其设置在 factory.rb 中的方法。
谢谢...
ruby-on-rails - 具有 aasm 的多个计数器缓存列
我正在寻找一种方法来缓存每个状态的数量。我之前做过计数器缓存,但是有没有办法为每个状态创建多个 counter_cache 列并保持更新,或者我应该在其他地方寻找缓存这些值。
似乎它只是数据库中的 3 列。有任何想法吗?
ruby-on-rails - 如何访问特定 rails 模型的acts_as_state_machine 状态集合?
是否可以访问给定模型的状态集合:
课堂对话包括AASM
结尾
我希望能够获得一系列状态,例如:
这可能吗?
ruby-on-rails - 为 AASM 中的所有转换注册回调?
每次状态转换后我都想调用 2 种方法。现在我正在做:
显然这不是最好的方法。我在复制代码,更重要的是,当回调真正应用于整个状态机时,我将它们与特定转换相关联。有什么更好的方法来处理这个?
ruby-on-rails - 表示谁更改了对象状态以及何时更改的最佳方式?(AASM)
现在,我正在存储上次在字段中更新模型状态的用户以及上次在state_last_updated_by_id
字段中更新状态的时间state_updated_at
。然后我定义这样的方法:
这显然不会扩展(并且不是一个很好的开始方法) - 这样做的正确方法是什么?