На самом деле есть способ удалить значение из сеанса. Как сказал RichH, переменная сеанса является экземпляром CGI :: Session. Когда вы вводите что-то вроде session[:foo]
, он на самом деле ищет этот символ в @data
переменной экземпляра в объекте сеанса. Эта переменная данных является хешем.
EDIT: В классе CGI :: Session есть переменная экземпляра данных. Если вы перейдете к документам и посмотрите на исходный код метода []=
, вы увидите, что существует @data
член.
Таким образом, чтобы удалить session[:foo]
, все, что вам нужно сделать, - это обратиться к этой переменной @data
изнутри сессии
session.data[:foo]
Теперь, чтобы удалить его:
session.data.delete :foo
Как только вы сделаете это, в вашей переменной сеанса не должно быть больше foo.