2013-10-04 32 views
0

我在我的應用中使用cancan進行角色管理。我在超級管理員,管理員,開發人員,測試人員等應用中擔任不同的角色。如何在不包括超級管理員和管理員的情況下顯示來自角色數組的角色下拉菜單。請看看我的代碼cancan我們如何在ROR中創建角色下拉列表

class User < ActiveRecord::Base 
    Roles = [:super_admin, :admin, :developer, :tester] 
end 

我需要一個包含開發者和測試一個選擇框,並試圖創建一個使用下面的代碼,但空項目在下拉列表中得到一個數組。

User::Roles.map{|r| 
    next if %w(super_admin admin).include?(r.to_s) 
    r.to_s.humanize 
} 

請幫

回答

1

quic ■一個班輪:

(User::Roles - [:super_admin, :admin]).map { |r| r.to_s.humanize } 
+0

我不認爲你的第一個片段將工作,如果你調用next地圖中的塊,你得到的結果數組的零 – Slicedpan

+0

@Slicepan你」再右吧。正在使用只有最後兩個選項的修改陣列。錯過了'緊湊'。無論如何,我更喜歡簡單的單線程。 –

+0

已更新的答案只顯示我的首選單行。 –

1
roles = User::Roles.dup 
roles.delete :super_admin 
roles.delete :admin 

角色陣列將擁有除超級管理員和管理員的所有角色

[編輯]

其實我覺得這種方式較好

ADMIN_ROLES = [:admin, :super_admin] 

roles = User::Roles.select {|r| !ADMIN_ROLES.include? r} 
+0

非常感謝你的朋友 – merahulpk