Добавление дополнительных атрибутов к событиям state_machine

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

Для данного штата возможны события, которые могут быть инициированы заявителем или работодателем. Есть ли способ пометить событие, чтобы указать это? Например, я хотел бы иметь возможность получить список всех переходов, которые могут быть инициированы работодателем, чтобы, когда работодатель вошел в систему, он мог видеть только доступные действия, которые работодатель может выполнить с приложением.

Или, если есть лучшая модель для этого, я хотел бы знать.


person Nick Sedlet    schedule 17.03.2012    source источник


Ответы (1)


Вы можете использовать дополнительный гем, например cancan, для авторизации этих методов.

У меня была связанная проблема несколько дней назад, и я получил этот хороший ответ:

Можно ли использовать канкан в модели?

Я придумываю что-то вроде этого:

# view
...
<% user.state_transitions.each do |transition| %>
  <% if can? "#{transition.event}".to_sym, User %>
    <%= link_to transition.event, user_path(user, user: {:state_event => transition.event}), :method => :put%>
  <% end %>
<% end %>
...

Вы должны проверить это также в методе обновления контроллеров.

person tonymarschall    schedule 17.03.2012
comment
есть прямой метод user.state_events, который возвращает все события позиции, которые можно вызвать из текущего состояния. - person Musaffa; 03.05.2014