Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails CanCanCan用户可以编辑自己的个人资料_Ruby On Rails_Ruby_Cancancan - Fatal编程技术网

Ruby on rails CanCanCan用户可以编辑自己的个人资料

Ruby on rails CanCanCan用户可以编辑自己的个人资料,ruby-on-rails,ruby,cancancan,Ruby On Rails,Ruby,Cancancan,我这里有个很奇怪的问题。这是导致我的能力出现所有问题的那一行。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浏览器,以用户身份登录并尝试编辑另一个浏览器时,Ca

我这里有个很奇怪的问题。这是导致我的
能力出现所有问题的那一行。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保持沉默。 如果我将
可以
替换为
不能
,则我无法编辑任何用户。就好像它没有查找条件一样

My
UsersController
将这一行置于顶部

authorize_resource
我被困在这里,任何帮助都将不胜感激

坎坎坎2.3.0

rails 5.2.1

确保在运行
授权\u资源
操作之前加载您的实例(
@user
),否则它将检查用户是否可以访问某些用户(
可以(: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

请提供一份报告。尝试显示再现问题的完整代码,而不是代码的描述。例如,您是否可能在
功能
中有一些额外的逻辑有时会覆盖此定义?或者可能正在使用不同的
能力
类?或者,
授权\u资源
是否已被覆盖?这个错误可能是由所有的事情引起的,如果没有完整的复制示例,我无法确定。您是否尝试过重新启动rails服务器?在对
ability.rb进行更改后,我无法确定您是否需要更改