我的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