问题标签 [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.

0 投票
1 回答
1031 浏览

ruby - AASM:将状态机定义与类定义分开

假设我有这个类(直接取自 aasm 文档):

我非常不喜欢我的状态机定义与我的类定义混合在一起的事实(因为当然在一个真实的项目中我会向 Job 类添加更多的方法)。

我想在一个模块中分离状态机定义,以便 Job 类可以是以下内容:

然后我在 app/models/state_machines 中创建了一个 job_state_machine.rb 文件,其内容类似于:

但这不起作用,因为 AASM 包含在模块中而不是 Job 类中......我什至尝试将模块更改为:

但它仍然无法正常工作......非常感谢任何提示或建议。

谢谢,伊格纳齐奥


编辑:

感谢 Alto,正确的解决方案是:

并且显然记得在主类中包含状态机定义,如下所示:

0 投票
2 回答
1053 浏览

ruby-on-rails - 如何使用 rspec 测试 assm 保护错误?

我有一个带有一些保护的状态机来防止特殊的状态转换。在我的规范中,我试图期待像这样的守卫违规错误:

结果,我在规范测试中收到了正确的错误:

失败/错误:expect(my_model.change_event).to raise_exception AASM::InvalidTransition:事件“change_event”无法从“current_state”转换

我想知道我应该如何更改我的规格以获得满意的测试?

0 投票
5 回答
3878 浏览

ruby-on-rails - Ruby on rails AASM 单击按钮时更改转换

我的问题很简单:如何更改aasm按钮单击时的转换?我应该把什么放在我的视野中?

我有两个按钮:ApproveReject。我的状态如下所示:

更新:我的参数是这些:

{"utf8"=>"✓", "_method"=>"put", "authenticity_token"...", "commit"=>"APP", "id"=>"65"}.

这就是我从视图中访问操作的方式:

我的控制器代码:

路线:

0 投票
1 回答
217 浏览

ruby-on-rails - 如何避免使用 AASM 重复代码?

因此,我的项目中有多个模型,其中许多模型具有激活和停用功能,我使用 AASM 进行管理

我想避免重复这段代码,它有 4 种不同的模型,我可能不会再向它们添加任何状态。

提前致谢

0 投票
1 回答
666 浏览

ruby - 如何使用 AASM 跳过状态机中的状态

我正在使用红宝石 AASM 宝石。

有谁知道跳过状态的正确方法是什么?

在 AASM 中进行设置的最佳方法是什么?

我在一组 resque 作业中使用此代码,因此 stage1 是一个 resque 作业,然后更新状态并开始完成下一个 resque 作业。阶段2相同,然后阶段3

0 投票
1 回答
2558 浏览

ruby-on-rails - AASM:根据条件转换到 2 个不同的状态

我正在使用 AASM。是否可能有 2 种不同的状态取决于条件例如:

这样做的目的是因为我使用的是遗留代码并且有很多“完成”调用并且终止状态是新的。

我已经尝试在一个新文件中覆盖状态机

但它没有用,它仍然进入完成状态

0 投票
1 回答
1501 浏览

ruby-on-rails - 如何从控制器执行 AASM 中的转换?

是否可以使用其名称在 AASM 中安全地执行转换?

我现在在 AASM 做什么:

我能做什么state_machine

0 投票
3 回答
1095 浏览

ruby-on-rails - 检查状态是否超过aasm中的另一个状态?

假设有一个具有 4 个状态的对象

还有一种方法应该只在对象的状态大于:in_process

我该如何进行这项检查?我以为这可能是什么

但这只是比较字符串。

我是否遗漏了某些东西,或者是否有执行此类检查的实际方法?

谢谢。

0 投票
0 回答
215 浏览

ruby-on-rails - AASM:守卫方法被调用两次

在使用 aasm 测试(Rspec)我的状态转换时,我注意到我所有的 :guard 方法都被调用了两次。

例如:

...

...

在我的 RSpec

...但是得到

我在这里做错了什么?

0 投票
1 回答
523 浏览

ruby-on-rails - 如何使用aasm将传递给事件的参数传递给错误块?

我的事件是这样定义的:

我称之为my_instance.share(message, tags)inc_in_path_share如果允许转换,我可以用messageand调用没有问题tags。但是当不允许转换时,我希望inc_share在我的error块中处理一个默认操作。

如何将消息和标签传递给error块?可能是我认为它也不是最好的方式(XY问题)。谢谢 !