Я использую Aaron Pfeifer's state_machine gem в моем приложении Rails3 - это (все еще) изящное.и я хотел бы установить следующее состояние на основе результата.«Очевидный» подход, показанный здесь, не работает: он вызывает ошибку ArgumentError: :picked_many is not a known state value
.
Как правильно установить состояние на основе результата события?(Или я просто думаю об этом неправильно?)
class MyModel < ActiveRecord::Base
state_machine :initial => :top do
event :pickanumber do
transition any => any
end
state :picked_zero
state :picked_one
state :picked_many
end
def pickanumber(n)
self.state = case n
when 0 then :picked_zero
when 1 then :picked_one
else :picked_many
end
super
end
end
и пример прогона:
> m = MyModel.create
=> #<MyModel id: 26, state: "top", ...>
> m.pickanumber(2)
ArgumentError: :picked_many is not a known state value