0

我正在尝试使用 aasm ruby​​ gem 和 rails 将参数传递到我的事件中。但是,每当我尝试按照文档中的示例进行操作时,都会收到错误消息Wrong number of arguments. Expected 0, got 2.。我究竟做错了什么?

代码如下:

class Foo < ActiveRecord::Base
  include AASM

  aasm column: :status do
    state :stopped, initial: true
    # TODO: if post fails, should this remain in_progress?
    state :running

    event :run, aasm_fire_event: :do_something do
      transitions from: :stopped, to: :running
    end
  end

  def do_something(list_of_things)
    .... #stuff here
  end
end

然后是调用代码

foo = Foo.new
foo.run(:running, [param1, param2])    

这似乎遵循示例,但我无法使其正常工作。任何帮助,将不胜感激。

4

1 回答 1

0

对于任何偶然发现此问题的人,如果您的事件或 old_state 或 new_state 上有其他回调将在该事件上被调用,上述模式将尝试将参数应用于所有回调。这就是发生在我身上的事情,所以我通过允许将参数传递给这些回调然后不对它们做任何事情来解决这个问题。

于 2016-10-10T17:43:07.710 回答