如何在 AASM gem 中将参数传递给 new/init
How to pass a parameter to new/init in AASM gem
我正在尝试使用 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传递参数?我想知道我该怎么做?
您在 aasm
块内定义了 initialize
,只需将其移出该块:
require 'rubygems'
require 'aasm'
class Term
include AASM
def initialize(term)
print term
end
aasm do
# ...
end
end
我正在尝试使用 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传递参数?我想知道我该怎么做?
您在 aasm
块内定义了 initialize
,只需将其移出该块:
require 'rubygems'
require 'aasm'
class Term
include AASM
def initialize(term)
print term
end
aasm do
# ...
end
end