Ruby AASM Gem:事件名称更改,但允许的方法仍要求旧事件名称



我一直在使用aasm gem(https://github.com/aasm/aasm(来定义一个对象。它带有几种用于事件的公共方法。例如:

使用对象a_machine,事件boot_up会将对象传递到新的状态greeting。我将能够执行以下查询:a_machine.may_boot_up?.但是,我将名称boot_up更改为wake_up。现在,以下方法引发异常:

a_machine.aasm.events(permitted: true)
# undefined method: may_boot_up?

我想问一下permitted是如何实现的,因为它仍然有一个过时的公共方法(与过时的事件名称相关联(。

其他事情工作正常。有谁知道为什么?或者你能给我进一步的指示如何进行吗? 谢谢

编辑:我有更多的线索: 将事件:boot_up的名称更改为:wake_up后,实际发生的是符号:boot_up仍保留在事件数组中,并且一个新的符号:wake_up被添加到该数组中。a_machine.aasm.events.map(&:name)返回事件数组。

更新:现在问题被框定为:如何从AASM::Core::event中删除事件,因为:boot_up是作为事件添加的,并且通过更改名称,我不小心只添加了一个新的事件:wake_up

对状态机事件进行更改后,您需要重新启动 rails 控制台/服务器。

相关内容

  • 没有找到相关文章

最新更新