ruby aasm gem: 事件名称更改,但允许的方法仍然要求旧事件名称

ruby aasm gem: event name change, but permitted method still ask for old event name

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

对于对象 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是如何实现的,因为它仍然有一个过时的public方法(与过时的事件名称相关联)。

其他一切正常。有谁知道为什么?或者你能给我进一步的指导吗? 谢谢,

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

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

更改状态机事件后,您需要重新启动 rails console/server。