Я следующие действия для моего контроллера предложений:Перенаправление определенной точки зрения, если Пандит не авторизованы для показа действия
def show
@proposal = Proposal.find(params[:id])
authorize @proposal
end
Я следующую политику:
class ProposalPolicy
attr_reader :current_user, :proposal
Как можно перенаправить к конкретной страницы. Скажите предложения индекса или корневую страницу, если разрешение отклонено при попытке перейти на страницу показа?
Когда я перейти к нему без правильного разрешения я просто получить страницу ошибки Рельсы со следующим:
not allowed to show? this<proposal OBJ ispsum lorem>
Я просто хочу, чтобы они имели простое уведомление и перенаправлены на другую страницу. Каков наилучший способ сделать это? Я угадываю с каким-то выражением if в представлении шоу, но пока ничего не работает.
def initialize(current_user, proposal)
@current_user = current_user
@proposal = proposal
end
def show?
@proposal.published? or @proposal.proposer == @current_user
end
end
Могу ли я дать пользовательские сообщения в зависимости от того, какое действие они не уполномочены для? – james
Действительно. Просто добавьте политику и действия в свой файл локали в config - вы можете увидеть пример в документации pundit: https://github.com/elabs/pundit#creating-custom-error-messages – trh