Возможно ли в Rails проверить, была ли уже выпущена переадресация или рендер?
Ruby 2.0.2, Rails 4.0.3, Волшебство 0.8.5
Я попытался выполнить перенаправление в моем коде, только чтобы получить сообщение об ошибке, что перенаправление или рендер уже выпущены. Если это так, я рад вернуться. Однако, если метод вызван по какой-либо другой причине, я бы хотел проверить, была ли выпущена переадресация или рендер, а если нет, выпустите ее. Код - это аутентификация на основе Sorcery.
В контроллере приложения у меня есть:
def not_authenticated
redirect_to login_url # , :alert => "First log in to view this page."
end
Это завершает проверку current_user следующим образом:
def current_user
@current_user ||= @view.current_user unless @view.blank?
begin
@current_user ||= Associate.find(session[:user_id]) unless session[:user_id].blank?
rescue ActiveRecord::RecordNotFound => e
return
end
current_user = @current_user
end
В спасении я хотел бы определить, произошло ли перенаправление или рендеринг, так что я мог бы redirect_to login_url, если нет. Это означало бы, конечно, что он был вызван по другому методу, каким он есть. Благодарю.
Ответы
Ответ 1
Вы можете позвонить performed?
в вашем контроллере, чтобы проверить, был ли вызван render
или redirect_to
:
performed? # => false
redirect_to(login_path)
performed? # => true
Подробнее о performed?
в документах Rails.