AuthLogic管理员用户和隐藏非管理员的管理链接
答
我看起来很长很难找到如何做到这一点,最后它太简单了! 我不需要路由改变,加载控制器代码或类似的东西。 只需通过迁移在数据库中添加一个名为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来设置至少一个管理员用户。
答
我经常使用的另一种方法是使用另一个称为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等。