• 1000 file:
match '*path', via: :all, to: 'errors#page_not_found'
Я использую Pundit gem для авторизации, и вот моя политика пользователей:
class UserPolicy < ApplicationPolicy
class Scope < Scope
def resolve
scope.all
end
end
def index?
user.admin?
end
end
Теперь проблема в том, что всякий раз, когда я посещаю страницу, не существует, он показывает мне это:
Но если пользователь без прав администратора посещает страницу, доступ к которой не предусмотрен (например, localhost: 3000 / users-list), он показывает следующее:
Как мне убедиться, что отображается страница 404 или конкретная страница c на моем папка publi c всякий раз, когда несанкционированный пользователь посещает страницу, доступ к которой может получить только администратор? ОБНОВЛЕНИЕ: вот содержимое моего файла application_controller.rb
:
class ApplicationController < ActionController::Base
include Pundit
protect_from_forgery with: :exception
before_action :configure_permitted_parameters, if: :devise_controller?
rescue_from Pundit::NotAuthorizedError, with: :user_not_authorized
rescue_from ActiveRecord::RecordNotFound, with: :show_404
def after_sign_in_path_for(resource)
stored_location_for(resource) || contacts_path
end
def after_sign_up_path_for(resource)
after_sign_in_path_for(resource)
end
protected
def configure_permitted_parameters
devise_parameter_sanitizer.permit(:sign_up) { |u| u.permit(:user_avatar, :name, :email, :password, :password_confirmation)}
devise_parameter_sanitizer.permit(:account_update) { |u| u.permit(:user_avatar, :name, :email, :password, :current_password)}
end
private
def user_not_authorized
flash[:danger] = "You are not authorized to perform this action."
redirect_to action: :index
end
def show_404
render template: "errors/404", status: 404
end
end