2012-03-17 78 views
0

我是state_machine的新手,並試圖用它來建模作業應用程序進程。將附加屬性附加到state_machine事件

對於一個給定的狀態,有可能發生的事件可以由申請人或僱主觸發。有沒有辦法標記一個事件來表明這一點?例如,我希望能夠得到僱主可以觸發的所有轉換的列表,因此當僱主登錄時,她只能看到僱主可以採取的可用行動。

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

回答

0

你可以使用額外的寶石cancan todo這種方法的一些授權。

我有一個相關的問題,前幾天,得到了這個漂亮的答案:

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

你必須同時檢查這控制器更新方法。

+0

有一個直接的方法'user.state_events',它返回所有可以從當前狀態調用的位置事件。 – Musaffa 2014-05-03 12:02:15