Таким образом, у меня есть довольно общий блок rescue_from в приложении Rails:доступа к переменным в rescue_from блоке
if Rails.env.production?
unless Rails.application.config.consider_all_requests_local
rescue_from Exception, with: lambda { |exception| render_error 500, exception }
rescue_from Mongoid::Errors::DocumentNotFound, with: lambda { |exception| render_error 404, exception }
end
end
, но я хочу, чтобы иметь возможность увидеть сообщение об ошибке, если я пользователь админ, так что я изменить «если» линия:
unless Rails.application.config.consider_all_requests_local || (current_user.present? && current_user.site_amdin)
но рельсам жалуется: «неопределенную локальную переменную или метод` current_user»для ApplicationController: Класс»
Так как я могу получить доступ к переменным экземпляра, грех ce код не находится внутри блока?
Я также попытался обернуть его в блоке before_filter:
before_filter do
if Rails.env.production? || (current_user.present? && current_user.site_admin)
unless Rails.application.config.consider_all_requests_local
Application.rescue_from Exception, with: lambda { |exception| render_error 500, exception }
Application.rescue_from Mongoid::Errors::DocumentNotFound, with: lambda { |exception| render_error 404, exception }
end
end
конец
но приложение не будет работать на сервере.
Несомненно, но, делая это, я обходите собственную ошибку, сообщая, что получаю, когда не прибегаю к rescue_from. Но я думаю, что могу просто воспроизвести этот формат, выведя сообщение об ошибке в шаблон. –
Попробуйте 'raise exception' для этого. – Inpego