繁体   English   中英

在有很多角色的情况下,Rails cancan如何限制用户的权限?

[英]Rails cancancan how to limit user privilige in view when there are lots of roles?

在有很多角色的情况下,Rails cancan如何限制用户的权限? 每个角色都有多个特权。 例如,在我的Rails应用程序中,大约有50个视图文件,例如article.html.erb,product.html.erb,comment.html.erb,order.html.erb等。 我要做的是在每个.html.erb文件中添加特权:

 <% if can? :update, @article %>
    <%= link_to "Edit", edit_article_path(@article) %>
 <% end %>
...
 <% if can? :update, @product %>
    <%= link_to "Edit", edit_product_path(@product) %>
 <% end %>

因此,如果以这种方式,我必须做很多乏味的工作。 更改请求后,我必须修改多个.html.erb文件。

所以我的问题是,是否有任何我可以接受的方法来避免这种方式? 例如使用全局标记来控制所有视图显示还是不显示“编辑”,“销毁”方法?

您可以在rails中使用布局
创建一个局部视图,在app/views layouts文件夹内说_user_privileges.html.erb_user_privileges.html.erb在其中编写与特权相关的代码。 现在,在其他每个视图文件中,您都可以使用<%= render 'layouts/user_privileges' %> 因此,现在您可以使用一个文件来更改特权。

_user_privileges.html.erb

<% if can? :update, @article %>
    <%= link_to "Edit", edit_article_path(@article) %>
 <% end %>
...
 <% if can? :update, @product %>
    <%= link_to "Edit", edit_product_path(@product) %>
 <% end %>

article.html.erb,product.html.erb,comment.html.erb,order.html.erb等。

...
<%= render 'layouts/user_privileges'  %>
...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM