我有一个名为“admin”的菜单条目,子条目为“client”,“users”和“sales”。然后我有3个不同的角色(管理员,经理,员工)。角色“admin”可以访问“用户”,角色“employee”可以访问“客户”和“销售”。 “经理”无法访问菜单中的任何选项。
我可以隐藏其他菜单,但由于这有两个不同的角色,我遇到了一些问题......我正在使用带有设计和cancan的rails 3(在用户模型中定义了角色)。
例如,这有效:
<% if can? :read, Client %>
在菜单条目中,我然后评估每个子条目以相应地显示/隐藏用户角色,这也有效。按照相同的逻辑,我试着隐藏主要条目,不止一个角色:
<% if can? :manage, (Client || User || Sales) %>
但这仅评估第一个(在本例中为“客户”)。有可能做我想要的吗?什么是同时“评估”多个角色的最佳方式?
答案 0 :(得分:1)
你可以这样做你想做的事情:
<% if can?(:manage, Client) || can?(:manage, User) || can?(:manage, Sales) %>
但我认为在这种情况下,更好的解决方案就是检查用户是否不是经理。这取决于您如何保存用户角色。例如:
<% if current_admin_user.role != 'Manager' %>