アプリケーションにログインしているユーザーを特定する方法や宝石はありますか? . 前もって感謝します。
3 に答える
まず、セッション バックエンドとして CookieStore 以外のものを使用する必要があります。たとえば ActiveRecord を使用すると、現在ログインしているすべてのユーザーを比較的簡単に照会できるはずです。
私はこれのための宝石を知りませんが、これは本当にあなたがどちらかのために必要とするようなものではありません.
追加のフィールドを定義することでそれを行うことができます。status
たとえば、テーブルでusers
.
したがって、ユーザーが を取得した場合logged in
、このフィールドにオンラインなどのステータスを設定する必要があります。
次に、コントローラーの create メソッドで次のことを行います。
User.create(:status => "online", #other params go here)
また、たとえば、ステータスを持つ新しい登録ユーザーを定義することもできますoffline
。
これは、ユーザー登録時に次のようにして行うことができます。
User.new(:status => "offline", #other params go here)
次に、ログインしているユーザーを見つけるには、次のようにします。
@online_users = User.where(:status => "online")
アップデート:
ログアウト ボタンをクリックしないユーザーの場合、上記の考え方は機能しません。
したがって、このアイデアをJugernautなどと組み合わせて、定期的に ping を送信して、ユーザーがまだそこにいるかどうかを知る必要があります。
ログインシステムに使用しているgemによって異なります。
Authlogic を使用している場合、ユーザー モデル用に作成されたすべてのフィールドを確実に覚えているわけではありませんが、名前スコープで定義し、last_request_atを検索するなどの検索を使用して、5 ~ 10 分未満で実行できると思います。 .
Devise を使用していて、特に gem を使用したい場合は、 https ://github.com/ctide/devise_lastseenable で試すことができます。