Yanıtlar:
Her şeyi temizlemek için bir denetleyicide reset_session yöntemini kullanın.
reset_session
İşte bu yöntemle ilgili belgeler: http://api.rubyonrails.org/classes/ActionController/Base.html#M000668
İçinde saklanan tüm nesneleri temizleyerek ve yeni bir oturum nesnesi başlatarak oturumu sıfırlar.
İyi şanslar!
raylarda oturum bir karma nesnesidir. Bu nedenle, hash'i temizlemek için mevcut olan herhangi bir işlev oturumlarla çalışacaktır.
session.clear
veya belirli anahtarların imha edilmesi gerekiyorsa:
session.delete(key)
Raylarda test edildi 3.2
katma
İnsanların bahsettiği session={}
kötü bir fikir. session.clear
Lobati'nin yorumlarıyla ilgili olarak , session.clear'ın yaptıklarının ötesinde başka bir temizlik yaptığı için, muhtemelen reset_session [session.clear'dan] kullanmanız daha iyi görünüyor. Reset_session dahili olarak session.destroy'u çağırır , bu da diğer bazı şeylerin yanı sıra clear olarak adlandırılır.
reset_session
ötesinde başka bir temizlik yaptığı için muhtemelen kullanmanız daha iyi görünüyor session.clear
. Dahili olarak, reset_session
çağıransession.destroy
, hangi kendisi çağırır clear
diğer bazı şeyler de .
bir kullanıcının oturumunu silmek için
session.delete(:user_id)
Yalnızca belirli parametreleri temizlemek için şunları kullanabilirsiniz:
[:param1, :param2, :param3].each { |k| session.delete(k) }
bu kodu ApplicationController'ınıza ekleyin
def reset_session
@_request.reset_session
end
(Sorunumu çözdüğü için neden yukarıda kimsenin bu koddan bahsetmediğini bilmiyorum) http://apidock.com/rails/ActionController/RackDelegation/reset_session
@_request.reset_session
ve reset_session
ikisi de işe yarıyor ve belki aynı şeyi mi yapıyorum?