2012-04-26 15 views

答えて

23

は、少なくとも私のシステム上で(レール3.2、2.0.4を工夫)、あなたはこのようにそれを行うことができます。

session次のとおりです。

{"session_id"=>"be02f27d504672bab3408a0ccf5c1db5", "_csrf_token"=>"DKaCNX3/DMloaCHbVSNq33NJjYIg51X0z/p2T1VRzfY=", "warden.user.user.key"=>["User", [3], "$2a$10$5HFWNuz5p6fT3Z4ZvJfQq."]} 

session["warden.user.user.key"][1][0]、その後、3があります。私はあなたが達成しようとしているが、現在のセッションからのみのユーザーをしたい場合は

にお答えしようとするかわからないんだけど

User.find(session["warden.user.user.key"][1][0]) 
+10

Rails 4.2.1でDevise 3.4.1をUser.find(セッション["warden.user.user.key"] [0] [0])にしたいと思っています –

+0

ありがとう。この例は醜いですが、うまくいきます。再度、感謝します。このクッキーの例:http://stackoverflow.com/a/43549108/5754223 – artamonovdev

3

:として

だから、私はそれを見つけるだろう、簡単な方法は、例えば、セッションで彼のIDを保存するために、次のようになります。

def login(username, pass) 
    # do the usual authentication stuff and get user 
    if logedin 
    session[:user_id] = user.id 
    end 
end 

次に、現在のユーザが

ようなものになるだろうを取得します
current_user =User.find(session[:user_id]) 

、現在ログインしているすべてのユーザーを見つけることです何をしたい、私はあなたが事前に定義されているため、DBでセッションを保存するためにアプリを設定への必要があると考えられる場合は、そのセッションデータは、ブラウザでCookieに格納されています。これに関する詳細については、この答えをチェックし How to track online users in Rails?


EDIT:はちょうどあなたが最初の方法はあなたのためにそこに実際にあるように工夫されている使用して気づきました。任意のコントローラーでcurrent_userメソッドに呼び出すだけで済みます。 2番目の方法ではこの回答を確認してください"Who's Online" using Devise in Rails

関連する問題