我的ability.rb
文件中包含以下代码段:
def initialize(user)
if user.group === 1
can :manage, Task do |task|
task.user.id === user.id
end
end
end
用户has_many
任务和每个任务belongs_to
用户。请求的任务记录(7)的user_id
为4.发送请求的用户的user_id
为4.
在任务show方法中,我有这个片段来授权并返回数据:
def show
@task = Task.find(params[:id])
authorize! :read, @current_user
render json: @task, root: "task"
end
为什么会被拒绝?
答案 0 :(得分:1)
您需要授权该任务,而不是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