В рубине на рельсах при выполнении session[:foo] = nil
он оставляет запись с именем :foo
в объекте сеанса. Как вы можете избавиться от этой единственной записи от объекта сеанса?Как вы удаляете одну запись из сеанса рубинов на рельсах?
ответ
На самом деле существует способ получить значение из сеанса. Как и RichH, переменная сеанса является экземпляром CGI :: Session. При вводе чего-то вроде session[:foo]
он фактически ищет этот символ в переменной экземпляра @data
в объекте сеанса. Эта переменная данных является хешем.
EDIT: В классе CGI :: Session имеется переменная экземпляра данных. Если вы перейдете к docs и посмотрите исходный код метода []=
, вы увидите, что есть член @data
.
Так удалить session[:foo]
все, что вам нужно сделать, это доступ, что @data
переменная внутри сессии
session.data[:foo]
Теперь, чтобы удалить его:
session.data.delete :foo
Как только вы делаете это не должно быть никаких больше foo в вашей переменной сеанса.
Поскольку сеанс - это Ruby CGI::Session, а не хеш, вызов delete фактически удалит сеанс. Удалить не принимает никаких параметров - это мое сообщение о неправильном количестве аргументов (1 или 0), когда вы пытаетесь понять, что предлагает Гиань.
Общепринятый способ очистки записи сеанса с сеансом [: foo] = nil, как вы предлагаете. Это далеко не идеально, но такие утверждения, как session [: foo] .nil? будет вести себя так, как ожидалось.
Я действительно хочу, чтобы он вел себя как обычный хэш ... но это не так.
Похоже, что самая простая версия . Все магазины (Cookie, File, ActiveRecord, ...) используют AbstractStore::SessionHash
как объект, который содержит данные, разные магазины предоставляют только средства для загрузки и сохранения экземпляров AbstractStore::SessionHash
.
AbstractStore::SessionHash
наследует от Hash
, так что это будет сдвинуто на метод Hash#delete
:
session.delete(:key_to_delete)
- 1. как вы удаляете эшафот в рельсах?
- 2. Скрепка рубинов на рельсах
- 3. str_to_date для рубинов на рельсах?
- 4. просмотр рубинов на рельсах api
- 5. INSERT несколько записей с использованием рубинов на рельсах активная запись
- 6. На каком основании названия рубинов и рубинов на рельсах называются
- 7. Как настроить netbeans для рубинов на рельсах?
- 8. NetSuite: Как вы удаляете продукты из категории?
- 9. Как вы удаляете дубликаты из большого datagridview?
- 10. установка веб-сервера до рубинов на рельсах
- 11. Глобальный массив для рубинов на рельсах
- 12. Опции для кометных серверов для рубинов/рубинов на рельсах?
- 13. Клиент-генератор SOAP для рубинов/рубинов на рельсах
- 14. AS2: Как вы удаляете onEnterFrame?
- 15. Отправлять письма с использованием рубинов на рельсах
- 16. LocalDB: Как вы его удаляете?
- 17. Как установить завиток на окна для рубинов на рельсах
- 18. Проблема рейка при развертывании рубинов на рельсах
- 19. Конфигурация Блокнота ++ для рубинов на рельсах
- 20. Интерактивная оболочка для рубинов на рельсах
- 21. Развертывание рубинов на рельсах через Capistrano
- 22. Как вы удаляете символ из столбца на SQL Server?
- 23. CKFinder gem для рубинов на рельсах
- 24. Создание рубинов на рельсах занимает меньше памяти
- 25. веб-идеал для рубинов на рельсах?
- 26. Mahout Плагин для рубинов на рельсах
- 27. Интеграция OrientDB для рубинов на рельсах
- 28. Динамический механизм бизнес-правил для рубинов на рельсах
- 29. Как удалить одну запись из EF, когда вы используете дженерики?
- 30. развертывание рубинов на рельсах приложений на Solaris 10
Это портативный accross все сессии магазинах? Он выглядит немного интимным, поскольку атрибут данных не упоминается в документах. – RichH
Я честно не знаю. Я обнаружил это с помощью отладчика и проверки переменной сеанса. Мне удалось найти небольшую поддержку для моего ответа, хотя http://tinyurl.com/cp7ntm, проверить последний метод, когда они назначают session_data = @ _session.data. Это самое лучшее, что я мог найти на нем. – vrish88
Я только что обновил свой ответ с гораздо лучшим источником для некоторых документов по этому вопросу. – vrish88