我无法将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
在控制台中运行正常。
答案 0 :(得分:2)
Project :: ActiveRecord_Relation的未定义方法`user':0x007f94b25dd010
首先,我假设@projects
是使用before_filter
在代码中的某处定义的,我还假设它返回记录集合。如果是这样,那么这就是问题
user.present? && user == record.user
此处record
中的record.user
将是记录集合而不是单条记录。所以record.user
只是失败了。
将authorize @projects
更改为authorize @project
可以解决您的问题