1

我想知道是否有办法覆盖应用程序控制器中的设计会话控制器创建操作。所以我有这个代码

  def check_concurrent_session
    if is_already_logged_in?
      flash[:error] = "We're sorry, you can't login to two places concurrently."
      sign_out_and_redirect(current_user)
    end
  end

我需要它在网站上的任何地方运行,然后在设计会话控制器中创建操作..

所以我在应用程序控制器上有一个 before_filter,但我可以排除一个像这样的控制器吗

before_filter :check_concurrent_session, :except => ["somecontoller"]

显然这是错误的,但你明白了。我知道我可以创建自己的会话控制器并从设计继承,但我想知道这是否可以从应用程序控制器中做到这一点

4

2 回答 2

1
before_filter :check_concurrent_session

def check_concurrent_session
  return if controller_name == 'some_controller'
  if is_already_logged_in?
    flash[:error] = "We're sorry, you can't login to two places concurrently."
    sign_out_and_redirect(current_user)
  end
end
于 2012-07-19T12:30:26.993 回答
1

application.rb

module XXX
  class Application < Rails::Application
    ...

    config.to_prepare do
      Devise::SessionsController.skip_before_filter :check_concurrent_session
    end
  end
end
于 2012-07-19T12:40:24.097 回答