2011-01-31 232 views

回答

0

我看起來很長很難找到如何做到這一點,最後它太簡單了! 我不需要路由改變,加載控制器代碼或類似的東西。 只需通過遷移在數據庫中添加一個名爲admin_flag的字段),然後修改Rails視圖表單以進行新建/編輯以使用它。 然後在應用程序/ html.erb只需添加:

<% if current_user %> 
     <% if current_user.admin_flag == true %> 
     | <%=link_to(:categories, :categories) %> 
     | <%=link_to(:users, :users) %> 
     <% end %> 
    <% end %> 

這將只顯示用戶和類別,如果登錄的用戶是管理員了。 在設置至少一個管理員用戶之後執行此操作,或者您將需要使用sql來設置至少一個管理員用戶。

1

我經常使用的另一種方法是使用另一個稱爲UserGroup的模型。例如:

$ rails g scaffold user_group name:string description:text is_admin:boolean

你會再增加一個user_group_id:integer到您的用戶模型:

$ rails g migration add_user_group_id_to_users user_group_id:integer

在你的用戶模型,你可以再添加兩個實例方法來幫助你計算出,如果任何特定用戶一個「正常」的用戶或「admin」用戶

#app/models/user.rb 
def normal? 
    self.user_group && !self.user_group.is_admin 
end 

def admin? 
    self.user_group && self.user_group.is_admin 
end

這可能是過度殺死那裏只有管理員與非管理員的項目,但是很方便,如果你有很多類別的用戶,如ecommerce_manager,story_editor等。