Контекст: я создаю функцию закладки для своего приложения, и она, кажется, работает, а затем появляется ошибка Pundit Pundit::AuthorizationNotPerformedError in SavedHairstylesController#create
Это очень странно, так как я) сгенерировал политику для своей закладкимодель с именем save_hairstyle_policy.rb, в этой политике я возвратил «true» для каждого метода.
b) В моем контроллере Saved_Hairstyles у меня есть метод CREATE и DESTROY, и в каждом методе я написал authorize @ save_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>