问题标签 [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 - AASM:将状态机定义与类定义分开
假设我有这个类(直接取自 aasm 文档):
我非常不喜欢我的状态机定义与我的类定义混合在一起的事实(因为当然在一个真实的项目中我会向 Job 类添加更多的方法)。
我想在一个模块中分离状态机定义,以便 Job 类可以是以下内容:
然后我在 app/models/state_machines 中创建了一个 job_state_machine.rb 文件,其内容类似于:
但这不起作用,因为 AASM 包含在模块中而不是 Job 类中......我什至尝试将模块更改为:
但它仍然无法正常工作......非常感谢任何提示或建议。
谢谢,伊格纳齐奥
编辑:
感谢 Alto,正确的解决方案是:
并且显然记得在主类中包含状态机定义,如下所示:
ruby-on-rails - 如何使用 rspec 测试 assm 保护错误?
我有一个带有一些保护的状态机来防止特殊的状态转换。在我的规范中,我试图期待像这样的守卫违规错误:
结果,我在规范测试中收到了正确的错误:
失败/错误:expect(my_model.change_event).to raise_exception AASM::InvalidTransition:事件“change_event”无法从“current_state”转换
我想知道我应该如何更改我的规格以获得满意的测试?
ruby-on-rails - Ruby on rails AASM 单击按钮时更改转换
我的问题很简单:如何更改aasm
按钮单击时的转换?我应该把什么放在我的视野中?
我有两个按钮:Approve
和Reject
。我的状态如下所示:
更新:我的参数是这些:
{"utf8"=>"✓",
"_method"=>"put",
"authenticity_token"...",
"commit"=>"APP",
"id"=>"65"}
.
这就是我从视图中访问操作的方式:
我的控制器代码:
路线:
ruby-on-rails - 如何避免使用 AASM 重复代码?
因此,我的项目中有多个模型,其中许多模型具有激活和停用功能,我使用 AASM 进行管理
我想避免重复这段代码,它有 4 种不同的模型,我可能不会再向它们添加任何状态。
提前致谢
ruby - 如何使用 AASM 跳过状态机中的状态
我正在使用红宝石 AASM 宝石。
有谁知道跳过状态的正确方法是什么?
在 AASM 中进行设置的最佳方法是什么?
我在一组 resque 作业中使用此代码,因此 stage1 是一个 resque 作业,然后更新状态并开始完成下一个 resque 作业。阶段2相同,然后阶段3
ruby-on-rails - AASM:根据条件转换到 2 个不同的状态
我正在使用 AASM。是否可能有 2 种不同的状态取决于条件例如:
这样做的目的是因为我使用的是遗留代码并且有很多“完成”调用并且终止状态是新的。
我已经尝试在一个新文件中覆盖状态机
但它没有用,它仍然进入完成状态
ruby-on-rails - 如何从控制器执行 AASM 中的转换?
是否可以使用其名称在 AASM 中安全地执行转换?
我现在在 AASM 做什么:
我能做什么state_machine
ruby-on-rails - 检查状态是否超过aasm中的另一个状态?
假设有一个具有 4 个状态的对象
还有一种方法应该只在对象的状态大于:in_process
我该如何进行这项检查?我以为这可能是什么
但这只是比较字符串。
我是否遗漏了某些东西,或者是否有执行此类检查的实际方法?
谢谢。
ruby-on-rails - AASM:守卫方法被调用两次
在使用 aasm 测试(Rspec)我的状态转换时,我注意到我所有的 :guard 方法都被调用了两次。
例如:
...
...
在我的 RSpec
...但是得到
我在这里做错了什么?
ruby-on-rails - 如何使用aasm将传递给事件的参数传递给错误块?
我的事件是这样定义的:
我称之为my_instance.share(message, tags)
。inc_in_path_share
如果允许转换,我可以用message
and调用没有问题tags
。但是当不允许转换时,我希望inc_share
在我的error
块中处理一个默认操作。
如何将消息和标签传递给error
块?可能是我认为它也不是最好的方式(XY问题)。谢谢 !