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

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 に答える
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 に答える