Aasm Gem将参数传递到事件

时间:2016-10-07 19:58:07

标签: ruby-on-rails ruby aasm

我试图将参数传递给我甚至使用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])    

这似乎遵循了这个例子,但我无法让它发挥作用。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

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