我在 cancan 不允许用户更新自己的数据时遇到问题。
我正在使用具有以下代码的标准设计用户控制器来检查是否允许使用以下代码进行更新:
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
这是我修改后的 cancan 能力代码,允许用户在不是管理员的情况下更新他们自己的模型。
user ||= User.new # guest user (not logged in)
if user.has_role? :admin
can :manage, :all
else
can :manage, User, :id => user.id
end
任何想法为什么这不允许我更新我自己的用户数据?