ruby on rails에서 session[:foo] = nil
을 수행하면 세션 객체에 :foo
이라는 항목이 남습니다. 세션 객체에서 어떻게 그 단일 항목을 제거 할 수 있습니까?ruby on rails 세션에서 단일 항목을 어떻게 지우시겠습니까?
답변
실제로 세션에서 값을 삭제하는 방법이 있습니다. 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이고 해시가 아니기 때문에 세션 삭제는 실제로 세션을 삭제합니다. 삭제는 매개 변수를 필요로하지 않습니다 - 이것은 당신이 hyuan이 제안한 것을 시도 할 때 "잘못된 인수 (1 또는 0)"메시지를받는 것입니다.
세션 입력을 지우려면 일반적으로 받아 들여지는대로 세션 [: foo] = nil을 사용하는 것이 좋습니다. 그것은 이상적이지는 않지만 세션 [: foo] .nil 같은 문장? 예상 한대로 동작합니다.
나는 정상적인 해시처럼 행동하고 싶다. 그러나 그렇지 않다.
가장 간단한 버전은처럼 보입니다. 모든 상점 (쿠키, 파일, ActiveRecord, ...)은 AbstractStore::SessionHash
을 데이터가 들어있는 오브젝트로 사용하며, 다른 상점은 AbstractStore::SessionHash
인스턴스를로드하고 저장하는 수단 만 제공합니다. Hash
에서
AbstractStore::SessionHash
상속 그래서 이것은 Hash#delete
방법 연기 :
session.delete(:key_to_delete)
- 1. Ruby on Rails 액션 도움말
- 2. Ruby on Rails : Model
- 3. ruby on rails 스코프 (검색)
- 4. Ruby on Rails 블로그
- 5. 정규식 + Ruby On Rails
- 6. Ruby On Rails 마이그레이션
- 7. Ruby on Rails 쿼리
- 8. Ruby on Rails + Devise
- 9. Mootools + Ruby on Rails ==?
- 10. Ruby on Rails 관계
- 11. ruby on rails + iis7
- 12. IIS7의 Ruby on Rails
- 13. Ruby On Rails Application.html.haml
- 14. Ruby on Rails 그래프
- 15. Ruby on Rails 튜토리얼
- 16. Ruby on Rails + Ajax
- 17. Ruby on Rails - 로그인
- 18. Ruby on Rails 스위치
- 19. Ruby on Rails 국제화
- 20. ruby on rails redirect_to
- 21. Ruby on Rails & Javascript
- 22. Ruby on Rails Listener
- 23. Ruby on Rails 개발 과정
- 24. Ruby on Rails : submit_tag에 확인을 어떻게 추가합니까?
- 25. Ruby on Rails : 확인란을 어떻게 제출하나요?
- 26. Ruby on Rails : 이전 URL은 어떻게 얻습니까?
- 27. Ruby on Rails : 두 테이블간에 어떻게 검색합니까?
- 28. 어떻게 hostgator에서 Ruby on Rails 애플리케이션을 배포합니까?
- 29. Ruby on Rails 응용 프로그램을 어떻게 제거합니까?
- 30. ruby on rails 기본 도움말
세션 저장의 모든 휴대용 건너인가? 문서에서 데이터 속성이 언급되지 않았기 때문에 조금 친숙 해 보입니다. – RichH
솔직히 모르겠습니다. 나는 그것을 디버거를 사용하고 세션 변수를 검사하여 발견했다. 그래도 내 답변에 대한 약간의 지원을 찾을 수있었습니다 http://tinyurl.com/cp7ntm, 그들은 session_data = @ _session.data를 할당 마지막 방법을 확인하십시오. 그게 내가 찾을 수있는 가장이야 – vrish88
방금 주제에 대한 몇 가지 문서에 대한 더 나은 소스로 내 대답을 업데이 트했습니다. – vrish88