2012-07-19 83 views
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"] 

顯然這是錯誤的,但你明白了。我知道我可以創建自己的會話控制器和色器件繼承,但我想知道這是否是可以從應用控制器內做到這一點

回答

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 
+0

這正是我需要什麼....這麼簡單..我相信我沒有想到...謝謝 – Trace 2012-07-19 12:39:20

1

application.rb

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

    config.to_prepare do 
     Devise::SessionsController.skip_before_filter :check_concurrent_session 
    end 
    end 
end 
+0

這很高興知道你可以覆蓋application.rb中的任何東西再次感謝 – Trace 2012-07-19 12:43:27

相關問題