4

アカウントを削除した後、ユーザー (管理者ロールを持つ) が別のユーザーをサインアウトできるようにします。問題は、sign_outヘルパー メソッドが両方のユーザーをサインアウトすることです。これは、同じスコープで動作するためです。1 人のユーザーだけをサインアウトするにはどうすればよいですか?

コードは次のとおりです。

class Users::RegistrationsController < Devise::RegistrationsController
  # ...
  def destroy
    @user = User.find(params[:id])
    sign_out @user
    @user.destroy
    redirect_to users_path, notice: I18n.t("messages.user_destroyed")
  end
  # ...
end

indexそして、サブ質問として、同様のユーザー関連のタスク、つまり 、 などのカスタムメソッドを追加するためにデバイスを拡張するコントローラーを使用することは良い習慣showですか?

4

2 に答える 2

0

この問題にぶつかったばかりですが、(少なくとも私にとっては)必要ではないようです。承認に CanCanCan を使用しています。ユーザーをログアウトせずに単に削除すると、ユーザーが何かをしようとするとすぐに、CanCanCan は承認されたユーザーではないことを識別し、実行させません。セットアップしたので、ログインページに直接リダイレクトするだけです。

「存在しないユーザーとしてログイン」は、「まったくログインしていない」ということになります。

于 2014-10-21T12:05:58.550 に答える
0

デバイスコントローラーの設定で次のように設定してみてください:

config.sign_out_all_scopes = false
于 2013-09-16T08:06:00.937 に答える