私はDevise gemを使用しています。に設定されていませんが:confirmable
、ユーザーが登録プロセスの直後に自動的にログインしないようにしたいです。何らかの理由で、彼らは自動的にログインするようになりましたが、これは私が望むものとは正反対です。
では、どうすればいいですか?
私はDevise gemを使用しています。に設定されていませんが:confirmable
、ユーザーが登録プロセスの直後に自動的にログインしないようにしたいです。何らかの理由で、彼らは自動的にログインするようになりましたが、これは私が望むものとは正反対です。
では、どうすればいいですか?
基本的には、上記の手順に従ってください。after_sign_up_path_for メソッドで、呼び出すことができます
sign_out resource
次に、移動先のページ (おそらくルートまたはログイン ページ) にリダイレクトします。
ユーザーは、devise によって呼び出される sign_up メソッドを介してログインされます。これは標準的な手順です。多くの Web サイトでは、ユーザーがサインアップするとすぐにログインします。最初に確認を必要としないほとんどの場合、ユースケースはやや非典型的です。それでも、上で説明した方法を実行すると、confirmable を実装したり、メンバーシップの承認を行ったりすることなく、必要なことが行われるはずです。
サインアップ後のユーザーのサインインは、アクションによって呼び出されるsign_up
メソッド inによって実現されます。このメソッドを空のメソッドで単純にオーバーライドして、サインインを防ぐことができます。それは私にとってはうまくいきました!Devise::RegistrationsController
[create][1]
でapp/controllers/users/registrations_controller.rb
:
class Users::RegistrationsController < Devise::RegistrationsController
def sign_up(resource_name, resource)
end
end
注:users
テーブル名に置き換えます。
追加:
管理者のみに新しいユーザーまたは他の管理者の追加を許可し、作成アクションを使用してそれらを追加する場合、この以前の方法では、サインアウトする必要がないという利点も得られます。after_sign_up_path_for
のメソッドをオーバーライドすることで、サインアップ後にリダイレクトされるページをカスタマイズできますapp/controllers/application_controller.rb
。
class ApplicationController < ActionController::Base
def after_sign_up_path_for(user)
'/users/show' # replace with the path you want
end