2011-01-31 205 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等。