RoR:CanCanCan仅授权用户创建的项目

时间:2015-08-06 17:03:26

标签: ruby-on-rails ruby cancancan

这段代码有什么问题?一个普通的用户仍然可以看到所有的关系,当他只应该看到他自己的。

我的观看代码:

<% if can? :read, Relato %>
  <td><%= relato.id %></td>
  <td><%= relato.cliente.name %></td>
  <td><%= relato.projeto.name %></td>
  <td><%= relato.local.logra %></td>
  <td><%= relato.time %></td>
  <td><%= relato.comment %></td>
<% end %>

我的Ability课程:

can :manage, :all if user.role == "admin"

if user.role == "normal"
  can :read, Relato ,  :user_id => user.id 
  can :manage, Relato,  :user_id => user.id 
end

1 个答案:

答案 0 :(得分:3)

您需要为用户授权特定实例:

<%= if can? :read, relato %>

当您尝试为整个班级授权用户时,如上所述,CanCanCan会忽略能力中定义的任何条件,因为它无法确定整个user_id模型的Relato字段;它只能对单个relato实例执行此操作。