如何编写用户只能读取其数据的CanCanCan Ability?

时间:2019-02-12 12:10:35

标签: ruby-on-rails authorization cancan cancancan

您如何限制用户访问权限,以便用户只能读取自己的记录?

我尝试过:

def initialize(user)
  can :read, User, :id => user.id

这:

def initialize(user)
  can :read, user

但是我仍然可以访问索引和显示中的每个用户。我在UsersController中有authorize_resource。

相关文档供参考: https://github.com/CanCanCommunity/cancancan/wiki/Defining-Abilities

2 个答案:

答案 0 :(得分:0)

:read != :show

:read == [:show, :index]

不幸的是,我没有安装程序可以对其进行测试,因此它是在黑暗中拍摄的。

can :show, User, :id => user.id

答案 1 :(得分:0)

似乎放

authorize! :show, @user

在表演动作中和

@users = User.accessible_by(current_ability)

在索引操作中使用以下命令解决了我的问题:

def initialize(user)
  can :read, User, :id => user.id

我现在看到我应该一直在使用load_and_authorize_resource而不是仅仅使用authorize_resource,因为它会自动添加这些内容。