如何拥有管理员用户以及如何为非管理员用户隐藏超链接?
答案 0 :(得分: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
在您的用户模型中,您可以添加两个实例方法,以帮助您确定任何特定用户是“普通”用户还是“管理员”用户:
#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等,则会很方便。
答案 1 :(得分:0)
我看起来很长很难找到如何做到这一点,最后它太简单了! 我不需要路由更改,控制器代码的加载或类似的东西。 只需通过迁移在数据库中添加一个名为admin_flag的字段,然后修改Rails视图表单以进行new / edit以使用它。 然后在application / html.erb上添加:
<% if current_user %>
<% if current_user.admin_flag == true %>
| <%=link_to(:categories, :categories) %>
| <%=link_to(:users, :users) %>
<% end %>
<% end %>
如果用户登录的用户也是管理员,则只显示用户和类别。 在设置至少一个管理员用户之后执行此操作,或者您将需要使用sql来设置至少一个管理员用户。