Я использую рельсы 5, rails_admin, devise и cancancan.rails_admin с cancan not catching access denied exception for redirect
Все работает правильно, но когда есть доступ к нему, он показывает экран ошибки «Вы не авторизованы для доступа к этой странице».
Я хочу, чтобы перенаправить на root_path, я искал, и я только обнаружил, что я должен написать в приложение/контроллеры/application_controller.rb этот код:
class ApplicationController < ActionController::Base
rescue_from CanCan::AccessDenied do |exception|
redirect_to root_path, :alert => exception.message
end
end
И я сделал, но я все еще в сообщении об ошибке, если оно не разрешено. Он не перенаправляется.
Я думаю, что остальная часть кода должна быть в порядке, потому что она работает, но не перенаправляется в любом месте.
#config/initializers/rails_admin.rb
config.authorize_with :cancan
config.current_user_method(&:current_user)
.
#app/models/ability.rb
class Ability
include CanCan::Ability
def initialize(user)
user ||= User.new # guest user (not logged in)
if user.admin
can :access, :rails_admin # only allow admin users to access Rails Admin
can :dashboard
can :manage, :all
else
can :read, :all # allow everyone to read everything
end
end
end
Я видел больше людей, спрашивающих то же самое, но все они без ответов. Я нашел один с 3-х ответов, но я не понимаю, принятое решение, потому что это на самом деле не объяснить любое решение: Cancan + Devise rescue_from not catching exception
Да , оно работает. Спасибо – user6945851
Да - также решение для моего. Использование rails_admin (1.1.1) –