2016-08-22 4 views
0

Могу ли я повторно принять уже принятый объект с камнем для обработки рельсов?Rails reaccept with workflow gem

Мой бизнес-кейс:

  1. Пользователь хочет обновить данные в общедоступном профиле.
  2. На каждом обновлении администратор должен просмотреть изменения, сделанные по данным
  3. Администратор принимает изменения и после того, что данные открыты для общественности
  4. Пользователь изменяет данные еще раз время (операция обновления) и новые изменения должны быть повторно рассмотрены.
  5. admin снова и принимает.

Итак, что должно быть моим workflow? В настоящее время выглядит следующим образом:

include Workflow 
    workflow do 
    state :new do 
     event :submit, :transitions_to => :awaiting_review 
    end 
    state :update do 
     event :submit, :transitions_to => :awaiting_review 
    end 
    state :awaiting_review do 
     event :review, :transitions_to => :being_reviewed 
    end 
    state :being_reviewed do 
     event :accept, :transitions_to => :accepted 
     event :reject, :transitions_to => :rejected 
    end 
    state :accepted 
    state :rejected 
    end 

Моя проблема заключается в том, что когда-то изменить состояние моего объекта принято, я не в состоянии вернуться к awaiting_review на втором обновлении. Любая помощь приветствуется. Благодаря!

ответ

1

Когда я использовал камень рабочего процесса, я бы просто создал другое событие для перехода назад.

state :accepted do 
    event :submit, :transitions_to => :awaiting_review 
end 

Я хотел бы сохранить имя submit событие так его можно назвать, когда профиль является новым, обновление или принятое государством.

+0

При попытке это принимает «Не принимается событие, определенное для принятого состояния», а это значит, что он не работает. У вас есть пример? Не могли бы вы опубликовать его на pastebin tnx. – user2670818

+0

Мне нужно увидеть ваши действия по обновлению, чтобы помочь дальше. Ваш код вызывает accept! когда его уже приняли. Вы обошли ожидающее состояние обзора? – codyeatworld

+0

Вы можете увидеть мой тест здесь http://pastebin.com/YE4bfrdt. Он работает, но проблема, с которой я столкнулась, заключается в том, что до принятия новых изменений видимы публике, что неправильно, сначала необходимо принять изменения, а затем увидеть их. Мне нужно показать состояние с последними принятыми данными. – user2670818