CanCanCanUser用户可以编辑自己的个人资料

时间:2018-10-17 14:33:59

标签: ruby-on-rails ruby cancancan

我在这里遇到了一个非常奇怪的问题。这是导致我的ability.rb

中所有麻烦的行
    can [:edit, :update, :destroy], User, id: user.id

启动Rails控制台时,我得到了预期的行为:

u = User.last
a = Ability.new(u)
a.can?(:edit, u)
=> true
a.can?(:edit, User.first)
=> false

但是,当我启动Web浏览器时,以用户身份登录并尝试编辑另一个浏览器,CanCanCan保持沉默。 如果将can替换为cannot,则无法编辑任何用户。好像没有查找条件。

我的UsersController将此行放在首位

authorize_resource

我对此一无所知,任何帮助将不胜感激。

cancancan 2.3.0
导轨5.2.1

1 个答案:

答案 0 :(得分:1)

请确保在执行@user操作之前已加载实例(authorize_resource),否则它将检查用户是否可以访问某些用户can?(:edit, User),总是正确的),而不是确切的用户。

before_action :load_user, except:[:index, :new, :create]
authorize_resource

...

private def load_user
  @user = User.accessible_by(current_ability, action_name.to_sym).find(params[:id])
end