ruby-on-rails - 我收到此错误我通常知道如何解决它,但在 SavedHairstylesController#create 中不起作用 Pundit::AuthorizationNotPerformedError
问题描述
上下文:我正在为我的应用程序创建书签功能,它似乎正在运行,然后遇到 Pundit 错误Pundit::AuthorizationNotPerformedError in SavedHairstylesController#create
这很奇怪,因为我有 a) 为我的书签模型生成了一个名为 saved_hairstyle_policy.rb 的策略,在这个策略中,我为每个方法返回了“true”。
b)在我的 Saved_Hairstyles 控制器中,我有一个 CREATE 和 DESTROY 方法,并且在每个方法中我都编写了授权 @saved_hairstyle
c)在我看来,我已经提到了这样的政策:policy(Saved_Hairstyle).create?
有任何想法吗?
要遵循的代码:
Saved_hairstyle_policy.rb:
class SavedHairstylePolicy < ApplicationPolicy
class Scope < Scope
def resolve
scope.all
end
end
def create?
return true
end
def destroy?
return true
end
end
Saved_Hairstyle 控制器:
class SavedHairstylesController < ApplicationController
def create
@hairstyle = Hairstyle.find(params[:hairstyle_id])
authorize @saved_hairstyle
(current user) & hairstyle
@saved_hairstyle = SavedHairstyle.new(user: current_user, hairstyle: @hairstyle)
if @saved_hairstyle.save
respond_to do |format|
format.html { redirect_to hairstyle_path(@saved_hairstyle.hairstyle) }
format.js
end
else
respond_to do |format|
format.html { render 'hairstyles' }
format.js
end
end
end
def destroy
@saved_hairstyle = SavedHairstyle.find(params[:id])
authorize @saved_hairstyle
@saved_hairstyle.destroy
@hairstyle = @saved_hairstyle.hairstyle
respond_to do |format|
format.html { redirect_to hairstyle_path(@saved_hairstyle.hairstyle)}
format.js
end
end
end
index.html 视图文件:
<div class="bookmark">
<% saved_hairstyle = SavedHairstyle.find_by(user: current_user, hairstyle: hairstyle.id) %>
<% if saved_hairstyle && policy(Saved_Hairstyle).create? %>
<%= link_to saved_hairstyle_path(saved_hairstyle), method: :delete do %>
<i class="fas fa-plus-circle"></i>
<% end %>
<% elsif %>
<% !saved_hairstyle && policy(Saved_Hairstyle).delete? %>
<%= link_to hairstyle_saved_hairstyles_path(hairstyle), method: :post do %>
<i class="fas fa-plus"></i>
<% end %>
<% end %>
</div>
解决方案
推荐阅读
- php - 我可以在 htdocs 之外创建我的项目吗
- reactjs - 如何使用 react native 在 react-native-datetimepicker 上设置当前时间?
- polly - 如何实现等待重试瞬态故障处理策略?
- reactjs - 直接在mysql数据库中更改数据后React App中断
- wordpress - 当 WooCommerce 在 Wordpress 中处于活动状态时删除不需要的 Url 变量
- python - Google drive api python - 如何将文件夹或文件夹中的所有文件下载到特定的本地目标路径
- python - blstm() :缺少必需的位置参数
- python - 是否可以在 discord.py 中的用户的另一个公会中获取和编辑 display_name?
- python - Django 在 order_by 之后从字段中获取值
- javascript - Draft-JS -使用 convertFromHTML 翻译成原子块摆脱了实体