如何允许管理员用户访问客户用户对象rails

时间:2015-07-23 04:06:59

标签: ruby-on-rails devise mongoid

我有一个属于客户(user_type)的报表对象。我进行了设置,以便客户能够授予或删除管理员的权限以查看客户报告。我需要知道我需要采取哪些步骤或方向才能使管理员用户可以查看报告。管理员用户应该只能查看报告(显示)并查看他们有权访问的报告索引。

我想也许我应该创建一个新的控制器,但我不确定这是否正确或者如何将另一个控制器绑定到已经有控制器的对象。

1 个答案:

答案 0 :(得分:2)

我强烈建议您查看 CanCanCan gem(不再支持CanCan gem的延续)。通过这种方式,您的代码最终会看起来像这样(您没有发布任何代码,因此我必须对您的变量进行假设等):

<% if current_user.admin? %>
    <% if can? :view_report, @customer %>
      <!-- Render the report to this admin -->
      <!--  .............................  -->
    <% end %>
<% end %>

然后你会在你的控制器中有这样的东西给予管理员权限来查看用户的报告:

def handle_report
  can [:show], Report, :user_id => user.id
  if current_user.admin?
    can :manage, :current_report
  end
end

再次,为猜测变量而道歉。