내 이전 응용 프로그램은 다음과 같이 중첩 된 세션 키를 사용하여 발생 : 이것은 레일 버전 4.0 이상에서 잘 작동Rails 4.1 쿠키 세션 serializer가 중첩 세션 키를 기호에서 문자열로 변환하는 이유는 무엇입니까?
session[:nested] = {some_id: 123}
하지만, 레일 4.1과는 구분되어 있습니다 중첩 된 세션 키 문자열으로 해제 직렬화 다음과 같이, 그래서 더 이상 기호로 그 중첩 된 값을 참조 할 수 없습니다 :
session[:nested][:some_id]
을하지만, 최상위 세션 키는 여전히 잘 작동 :
# First action that puts values into session.
def set_session_vars
session[:some_id] = 321
session[:nested] = {some_id: 123}
end
# Second action that loads values from session.
def set_session_vars
root_id = session[:some_id] # => 321, works as expected.
nested_id = session[:nested][:some_id] # => nil, THIS DOES NOT!
end
Rails 4.1은 세션이 직렬화되는 방식에 다소 큰 변화를 가져옵니다. 더 이상 Marshal.dump를 사용하지 않고 객체를 직렬화하지 않는 기본 JSON 직렬기를 사용합니다. 그것은 정수 및 문자열과 같은 기본 유형에 대해 잘 작동합니다.
Rails.application.config.action_dispatch.cookies_serializer = :hybrid
질문 : 당신은 "중첩 된 세션 키를 사용하지 않는"외에 추천 할 수있는 중 하나
은 내가 "하이브리드"세션 시리얼 라이저를 사용하여 시도,하지만 작동하지 않는 이유는 무엇입니까?
감사합니다. 알렉스.
감사합니다. @mitsu. 이미이 문제의 해결 방법을 발견했습니다. –