2012-04-26 8 views

cevap

23

(3.2 raylar, 2.0.4 hazırlamak), bunu şöyle yapabilirsiniz:

session geçerli:

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

session["warden.user.user.key"][1][0] ardından 3 olduğunu. Ne başarmak için çalışıyoruz ancak geçerli oturumdaki sadece Kullanıcıyı istiyorsanız

cevap çalışacağım emin değilim

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

Raylar Üzerinde 4.2.1, Devise 3.4.1 User.find kullanmak istersiniz (session ["warden.user.user.key") [0] [0]) –

+0

Teşekkürler. Bu örnek çirkin, ama işe yarıyor. Tekrar teşekkürler. Çerezler için bu örnek: http://stackoverflow.com/a/43549108/5754223 – artamonovdev

3

: olarak

Yani, bunu bulmak istiyorum , basit bir şekilde, örneğin oturumda yaptığı id saklamak için olacaktır:

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

Sonra geçerli kullanıcı olacağını olsun bir şey

gibi
current_user =User.find(session[:user_id]) 

giriş yapmış olan tüm kullanıcıları bulmaktır istediğini olsam, o oturumun veri deposu tarayıcısında tanımlama olduğunu önceden tanımlanmış, çünkü db oturumu kaydetmek için uygulamanızı yapılandırma için gerek . Bu konuda daha fazla bilgi için Bu cevap How to track online users in Rails?


EDIT kontrol edin: Sadece hazırlamak kullandığınız fark böylece ilk yolu sizin için aslında yoktur. Herhangi bir denetleyicide current_user yöntemini aramanız yeterlidir. İkinci yol için bu yanıtı kontrol edin "Who's Online" using Devise in Rails

İlgili konular