Rails基于被拒绝的关联取消授权



我的ability.rb文件中有以下片段:

def initialize(user)
  if user.group === 1
    can :manage, Task do |task|
      task.user.id === user.id
    end
  end 
end

用户CCD_ 2执行任务,并且每个任务CCD_。被请求的任务记录(7)的user_id为4。发送请求的用户的user_id为4。

在tasks-show方法中,我有这个片段来授权并返回数据:

def show
    @task = Task.find(params[:id])
    authorize! :read, @current_user
    render json: @task, root: "task"
end

为什么会被拒绝?

您需要授权任务,而不是current_user。假设current_user为:

def show
  @task = Task.find(params[:id])
  authorize! :read, @task
  render json: @task, root: "task"
end

在你的能力文件中,你可以这样写:

def initialize(user)
  can :manage, Task do |task|
    task.user.id == user.id && user.group == 1
  end
end 

最新更新