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保持沉默。
如果我将可以
替换为不能
,则我无法编辑任何用户。就好像它没有查找条件一样
MyUsersController
将这一行置于顶部
authorize_resource
我被困在这里,任何帮助都将不胜感激
坎坎坎2.3.0rails 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进行更改后,我无法确定您是否需要更改