RoR:CanCanCan 只授权用户创建的项目
RoR: CanCanCan authorize only user created items
这段代码有什么问题?一个普通用户仍然能够看到所有相关的东西,而他应该只能看到他自己的。
我的查看代码:
<% 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
class:
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
您需要为特定实例授权用户:
<%= if can? :read, relato %>
当您尝试为整个 class 授权用户时,如上所示,CanCanCan 会忽略 Ability 中定义的任何条件,因为它无法确定整个 user_id
字段Relato
型号;它只能对单个 relato
实例执行此操作。
这段代码有什么问题?一个普通用户仍然能够看到所有相关的东西,而他应该只能看到他自己的。
我的查看代码:
<% 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
class:
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
您需要为特定实例授权用户:
<%= if can? :read, relato %>
当您尝试为整个 class 授权用户时,如上所示,CanCanCan 会忽略 Ability 中定义的任何条件,因为它无法确定整个 user_id
字段Relato
型号;它只能对单个 relato
实例执行此操作。