Pundit 抛出未定义的方法“用户”
Pundit throws undefined method `user'
我无法将项目模型视图限制为所有者用户。无法弄清楚这一点:
错误:
undefined method `user' for #<Project::ActiveRecord_Relation:0x007f94b25dd010>
project_policy.rb
class ProjectPolicy < ApplicationPolicy
def show?
user.present? && user == record.user
end
end
项目总监
class ProjectsController < ApplicationController
def show
@project = Project.find(params[:id])
@pages = @project.pages
authorize @projects
end
如果我删除 user == record.user
一切正常
application_policy
文件为默认值
项目属于用户
用户有很多项目
project.user
在控制台中工作正常。
undefined method `user' for Project::ActiveRecord_Relation:0x007f94b25dd010
首先,我假设 @projects
是在您的代码中使用 before_filter
定义的,并且我还假设它返回一个 记录集合 .如果是这样,那就是问题所在
user.present? && user == record.user
此处 record.user
中的 record
将是 记录集合 而不是 单个记录 。所以 record.user
因该错误而失败。
将 authorize @projects
更改为 authorize @project
应该可以解决您的问题
我无法将项目模型视图限制为所有者用户。无法弄清楚这一点:
错误:
undefined method `user' for #<Project::ActiveRecord_Relation:0x007f94b25dd010>
project_policy.rb
class ProjectPolicy < ApplicationPolicy
def show?
user.present? && user == record.user
end
end
项目总监
class ProjectsController < ApplicationController
def show
@project = Project.find(params[:id])
@pages = @project.pages
authorize @projects
end
如果我删除 user == record.user
一切正常
application_policy
文件为默认值
项目属于用户 用户有很多项目
project.user
在控制台中工作正常。
undefined method `user' for Project::ActiveRecord_Relation:0x007f94b25dd010
首先,我假设 @projects
是在您的代码中使用 before_filter
定义的,并且我还假设它返回一个 记录集合 .如果是这样,那就是问题所在
user.present? && user == record.user
此处 record.user
中的 record
将是 记录集合 而不是 单个记录 。所以 record.user
因该错误而失败。
将 authorize @projects
更改为 authorize @project
应该可以解决您的问题