私のdeviseユーザーは「database_authenticatable」と「token_authenticatable」です。そのユーザーのデータベースの「authentication_token」フィールドをコンソールから削除しようとしましたが、既存の認証トークンを使用できるようです。ユーザーを完全に削除することはできますが、そこまで行きたくありません。
編集:明確にするため。 Rails consoleを使用してユーザーをサインアウトします。つまり、Rails console
その後、いくつかのコマンド。
Deviseは、これらのことを行うヘルパーメソッドを提供します。
user = User.find(params[:id])
sign_in user
sign_out user
お役に立てれば。
Deviseを使用している場合、Railsコンソールで以下を使用できます。ユーザーアカウントごとに1つのセッションのみを使用している場合、これは私のアプリのように最適です。セッションをredisDBに保存しています。
user = User.first
user.update_attributes(unique_session_id: "")
私がしなければならなかったことは、そのユーザーのユーザーunique_session_idをクリアし、Railsでセッションから追い出されます。
ただし、同じユーザーアカウントの複数のセッションでは、これは機能しません。
すべてのユーザーセッションをクリアする場合は、ターミナルから以下を実行できます。
rake db:sessions:clear
セッションを保存する属性トークンのようです:
user.tokens = nil
user.save
私がsign_out @user
パターンのファンではないのは、少なくとも私が使用しているdeviseバージョンでは、引数に関係なく現在のユーザーをサインアウトするためです。データベースにセッションを保存している場合、これを行うことができます:
@user.update_attributes(current_sign_in_token: "")
TBHそれが最善の方法だとは思いませんが、私自身の研究で見た最善の方法です。