Rails 4 Pundit - 父模型中的策略

Rails 4 Pundit - policies in parent models

我正在尝试将 rails 4 与专家策略一起使用。

我有一个配置文件模型和一个项目模型。项目是带有配置文件的 HABTM。

我有一个项目策略,它有一个创建?动作(设置为真)。

在我的个人资料显示页面中,我希望允许用户创建新项目,前提是他们的项目策略创建操作允许。

<% if policy(@project).create? %>
  <%= link_to 'CREATE A PROJECT', new_project_path, :class=>"btn btn-info"  %>
<% end %>

当我尝试这个时,我得到了一个 nil 策略错误。是因为您不能在配置文件视图中使用项目操作吗?如果是这样,我该如何解决才能在我的个人资料显示页面上显示一个新项目按钮?

您可以使用 ProjectPolicy.new(current_user, @project).create? 来指定 ProjectPolicy

然而,正如@miler350 所说,@project 可能是 nil。 (例如:用户没有创建项目)。确保您的 ProjectPolicy#create? 正确处理 nil