将其他属性附加到state_machine事件

时间:2012-03-17 05:13:44

标签: ruby-on-rails ruby state-machine

我是state_machine的新手,我正在尝试使用它来为作业申请流程建模。

对于特定州,有可能由申请人或雇主触发的事件。有没有办法标记一个事件来表明这一点?例如,我希望能够获得雇主可以触发的所有转换的列表,因此当雇主登录时,她只能看到雇主可以对应用程序采取的可用操作。 / p>

或者如果有更好的模型,我很想知道。

1 个答案:

答案 0 :(得分:0)

您可以使用cancan之类的额外宝石来对此方法进行一些授权。

几天前我遇到了一个相关的问题,得到了这个很好的答案:

Is it possible to use cancan in a model?

我想出了类似的东西:

# 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 %>
...

您还必须在控制器更新方法中进行检查。