AuthLogic管理员用户和隐藏非管理员的管理员链接

最后发布: 2011-01-31 16:09:00


问题

如何拥有管理员用户,以及如何为非管理员用户隐藏超链接?

authlogic admin
回答

我经常使用的另一种方法是使用另一个名为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等),这将很方便。


回答

我漫长而艰辛地寻找解决方法,最后太简单了! 我不需要更改路由,加载控制器代码或类似的东西。 只需通过迁移在数据库中添加一个名为admin_flag的字段即可,然后修改Rails视图表单以供新建/编辑使用。 然后在application / html.erb上添加:

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

如果登录的用户也是admin,则只会显示用户和类别。 设置至少一个管理员用户后执行此操作,否则您将需要使用sql设置至少一个管理员用户。