gpt4 book ai didi

ruby-on-rails - 如果不是管理员,用户可以更新自己吗?

转载 作者:行者123 更新时间:2023-12-02 00:08:38 27 4
gpt4 key购买 nike

我遇到了 cancan 不允许用户更新他们自己的数据的问题。

我正在使用具有以下代码的标准设计用户 Controller 来检查是否允许使用以下代码进行更新:

def update
authorize! :update, @user, :message => 'Not authorized as an administrator.'
@user = User.find(params[:id])
if @user.update_attributes(params[:user])
self.update_districts
self.update_property_types
redirect_to users_path, :notice => "User updated."
else
redirect_to users_path, :alert => "Unable to update user."
end
end

这是我修改后的康康能力代码,允许用户在不是管理员的情况下更新他们自己的模型。

    user ||= User.new # guest user (not logged in)
if user.has_role? :admin
can :manage, :all
else
can :manage, User, :id => user.id
end

知道为什么这不允许我更新自己的用户数据吗?

最佳答案

你做这两行的顺序错了!

authorize! :update, @user, :message => 'Not authorized as an administrator.'
@user = User.find(params[:id])

authorize! 行中,@user 只是 nil,所以它变得不高兴了。切换它们,它应该可以工作。即

@user = User.find(params[:id])
authorize! :update, @user, :message => 'Not authorized as an administrator.'

关于ruby-on-rails - 如果不是管理员,用户可以更新自己吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16786171/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com