【发布时间】:2015-07-23 04:06:58
【问题描述】:
我有一个属于客户(用户类型)的报表对象。我进行了设置,以便客户能够授予或删除管理员查看客户报告的权限。我需要知道我需要采取哪些步骤或方向才能让管理员用户查看报告。管理员用户应该只能查看报告(显示)并查看他们有权访问的报告索引。
我在想也许我应该创建一个新控制器,但我不确定这是否正确,或者如何将另一个控制器绑定到已经有控制器的对象。
【问题讨论】:
标签: ruby-on-rails devise mongoid
我有一个属于客户(用户类型)的报表对象。我进行了设置,以便客户能够授予或删除管理员查看客户报告的权限。我需要知道我需要采取哪些步骤或方向才能让管理员用户查看报告。管理员用户应该只能查看报告(显示)并查看他们有权访问的报告索引。
我在想也许我应该创建一个新控制器,但我不确定这是否正确,或者如何将另一个控制器绑定到已经有控制器的对象。
【问题讨论】:
标签: ruby-on-rails devise mongoid
我强烈建议研究 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
再次为您猜测变量表示歉意。
【讨论】: