Возможно ли в 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.