我有设置设计,并且在http://codepany.com/blog/rails-5-user-accounts-with-3-types-of-roles-devise-rails_admin-cancancan/中建议我添加了超级用户和主管角色。现在我想只允许超级用户访问很多视图(在配置数据上做CRUD)。
我知道我可以通过在内容中包装if来实现。
<% if current_user.superadmin_role? %>
...all the content...
<% else %>
This page is not available to you
<% end %>
从我收集的内容中,我需要为我想要限制的所有观点执行此操作。但是想知道是否有更优雅的方式来做到这一点。即我可以做一些事情,比如将所有支票放在一个地方,只允许某些页面通过甚至禁止所有页面,并且我可以将一些代码放在公共页面上。
答案 0 :(得分:0)
如果您不想显示的内容是整页,则可以通过添加来完成此操作
before_action :authenticate_admin!
在控制器。
#some_controller.rb
before_action :authenticate_admin!
def action
...
end
private
def authenticate_admin
unless current_user.superadmin_role?
redirect_to "403.html"
end
end
或者,如果你想做非控制器级别,
#view
<div class="hide <%= 'admin' if @is_admin %>">
hogehoge
</div>
#controller
before_action set_is_admin
def set_is_admin
@is_admin = current_user.superadmin_role? ? true : false
end
然后添加
# application.css
<style>
.hide{
display: none;
}
.admin{
display: block;
}
</style>