我一直在使用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 控制台/服务器。