无法为
NilClassPolicy
找到策略nil
的错误
这是每次运行程序后的警告,我想在这里管理创建project_user
的权限,并隐藏加号按钮以创建project_user
role.rb:
def is_manager?
name == "Manager"
end
user.rb:
def is_manager_in_project? project_id
project_users.find_by(project_id: project_id).role.is_manager?
end
projectUserPolicy:
def create_multiple?
user.is_manager_in_project?(record.project_id)
end
project_user_controller:
class ProjectUsersController < ApplicationController
before_action :load_project
before_action -> { authorize @project_user }, only: :create_multiple
def create_multiple
authorize @project_user
service = AddMembersService.new(params[:ids], params[:project_id]).perform
if service.success?
flash[:success] = service.message
else
flash[:danger] = service.message
end
redirect_to project_path(@project)
end
end
结束视图:
项目/show.html.slim
- if policy(@project_user).create_multiple?
project.rbhas_many :project_users
和
project_user.rbbelongs_to :project
谢谢大家。如果有更多信息,请告诉我。
这里要查找NillPolicy,这意味着授权对象为nil。查看您的代码,@project_user
未实例化。
您应该添加before_action
以获取或创建它。