Я сейчас использую Рабочий процесс .
class Link < ActiveRecord::Base
include Workflow
workflow do
state :new do
event :process, :transitions_to => :checking #checking http_response_code & content_type
end
state :checking do
event :process, :transitions_to => :fetching_links # fetching all links
end
state :fetching_links do
event :process, :transitions_to => :checking #ready for next check
end
end
end
Теперь я могу сделать:
l = Link.new
l.process!
l.process!
l.process!
l.process!
# n times l.process! (in a loop, or cron job for example)
Но это может произойти, какая-то ссылка не будет отвечатьили дать мне неправильный ответ во время процесса проверки.
Как я могу условно переключиться в другое состояние?
Я имею в виду что-то вроде этого:
class Link < ActiveRecord::Base
include Workflow
workflow do
state :new do
event :process, :transitions_to => :checking #checking http_response_code & content_type
end
state :checking do
event :process, :transitions_to => :fetching_links # if all is fine
event :process, :transitions_to => :failded # if something goes wrong
end
state :fetching_links do
event :process, :transitions_to => :checking #ready for next check
end
end
end