В state_machine вы определяете события, которые изменяют состояние базового объекта. Вы также можете установить атрибут состояния в желаемое состояние.
В вашем случае вы бы сделали:
a.state = a > b ? "state2" : "state3"
a.save!
Вы также можете проверить состояние с помощью:
a.state1?
Что вы должны сделать, это определить событие, которое описывает переход из состояния1 в состояние2 или состояние3. Например:
state_machines :state, initial: :state1 do
...
event :go_to_state2 do
transition state1: :state2
end
event :go_to_state3 do
transition state1: :state3
end
...
end
Затем вы переходите в следующее состояние:
if a > b
a.go_to_state2!
else
a.go_to_state3!
end
Использование событий - намного более чистый способ манипулирования состоянием. Все это описано в Readme на странице github плагина