如何编写 CanCanCan 能力让用户只读他们的数据?

How to write CanCanCan Ability for user to read only their data?

如何限制用户访问权限,使用户只能阅读自己的记录?

我试过:

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

:read != :show

:read == [:show, :index]

不幸的是我没有测试它的设置所以它是在黑暗中拍摄的。

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

好像把

authorize! :show, @user

在表演中和

@users = User.accessible_by(current_ability)

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

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

我现在可以看到我应该使用 load_and_authorize_resource 而不是 authorize_resource 因为它会自动添加那些。