0

我正在尝试用 AASM gem 制作一个有限状态机链。我想检查一个字符串是否唯一(数据库中不存在)。

我写:

require 'rubygems'
require 'aasm'

class Term
  include AASM

  aasm do
    state :Beginning, :initial => true
    state :CheckUniqueness

    def initialize(term)
        print term
    end

    event :UniquenessChecking do
        print "Check uniqueness"
      transitions :from => :Beginning, :to => :CheckUniqueness
    end

  end

end

term = Term.new("textstring")
term.CheckUniqueness

但是当我使用时Term.new("textstring"),它不允许我传递我认为的参数,因为我得到一个错误:

`initialize': wrong number of arguments (1 for 0) (ArgumentError)
 from try.rb:24:in `new'
 from try.rb:24:in `<main>'

是否可以在 AASM 中使用 init 传递参数?我想知道我该怎么做?

4

1 回答 1

1

initializeaasm块内定义,只需将其移出该块:

require 'rubygems'
require 'aasm'

class Term
  include AASM

  def initialize(term)
    print term
  end

  aasm do
    # ...
  end
end
于 2016-10-29T15:07:24.470 回答