是否有可能在Rails中检查是否已发布重定向或渲染?

时间:2014-10-19 01:35:03

标签: ruby-on-rails ruby redirect

Ruby 2.0.2,Rails 4.0.3,Sorcery 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

在救援中,我想确定是否已经发生重定向或渲染,以便我可以重定向到login_url,如果没有。当然,这意味着它是从一种不同的方法调用的。感谢。

1 个答案:

答案 0 :(得分:38)

您可以致电控制器中的performed?以检查是否已拨打renderredirect_to

performed?               # => false
redirect_to(login_path)
performed?               # => true 

在Rails文档中了解有关performed?的更多信息。