Ruby on rails 是否有方法覆盖设计会话控制器创建操作?

Ruby on rails 是否有方法覆盖设计会话控制器创建操作?,ruby-on-rails,ruby,ruby-on-rails-3,devise,before-filter,Ruby On Rails,Ruby,Ruby On Rails 3,Devise,Before Filter,我想知道是否有方法覆盖应用程序控制器内的Desive sessions controller创建操作。所以我有这个密码 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

我想知道是否有方法覆盖应用程序控制器内的Desive sessions controller创建操作。所以我有这个密码

  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
我需要它在站点上的任何地方运行,然后在Desive sessions controller中创建操作

因此,我在应用程序控制器上有一个before_过滤器,但是我可以排除像这样的控制器吗

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

显然这是错误的,但你明白了。我知道我可以创建自己的会话控制器并从Desive继承,但我想知道这是否可以从
application.rb中的应用程序控制器中执行

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
module XXX
  class Application < Rails::Application
    ...

    config.to_prepare do
      Devise::SessionsController.skip_before_filter :check_concurrent_session
    end
  end
end
模块XXX
类应用程序
这正是我所需要的……太简单了……简直不敢相信我没有想到……谢谢。我有一点怀疑这种方法检查并发会话是定制的还是由Desive提供的?我正试图在Desive源代码中搜索我找不到这个方法的定义很高兴知道你可以覆盖应用程序中的任何内容。再次感谢