允许管理员查看所有页面的语法

时间:2015-04-25 01:49:15

标签: ruby-on-rails ruby

如果页面是公开的,我想显示页面。如果该页面的用户正在尝试查看该页面(如果该页面是私有的),并且该管理员试图查看该页面。

我写过

 <% if @user.is_public == true || session[:user_id] ==  @user.id %>
 <%= render "public_page" %>
 <% else %>
 Private Page
 <%end%>

我不知道如何添加类似下面的内容。有什么想法吗?

<% unless session[:site_admin] %>

目的是允许网站管理员查看所有私人网页。

1 个答案:

答案 0 :(得分:0)

只需将支票添加到if:

<% if @user.is_public == true || session[:user_id] ==  @user.id || session[:site_admin] %>
  <%= render "public_page" %>
<% else %>
  Private Page
<%end%>

顺便说一下,命名is_public方法的 ruby​​ 方式越public?

顺便说一句,如果您的项目很大并且您需要可靠的权限管理,那么将Devise gem与CanCanCan结合使用是一种很好的做法。然后,您可以在一个位置models/ability.rb定义所有权限,并使用can? :read, @post检查权限。