Ruby on rails 是否有方法覆盖设计会话控制器创建操作?
我想知道是否有方法覆盖应用程序控制器内的Desive sessions controller创建操作。所以我有这个密码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
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源代码中搜索我找不到这个方法的定义很高兴知道你可以覆盖应用程序中的任何内容。再次感谢