장바구니를 구현하려고합니다. 데이터베이스에 session_id를 저장하고 장바구니에있는 관련 제품을 저장합니다. 로그인 후 동일한 세션을 갖고 session_id에 액세스하여이 제품을 사용자와 연결할 수 있습니다. 그러나 session_id는 로그인 한 후에 다른 것으로 보입니다. 어떻게 이런 동작을 방지 할 수 있습니까 (Warden이이 작업을 수행한다고 생각합니다), 아니면 틀린 경우 어떻게 구현해야합니까? 여기에 내 코드의 일부는 다음과 같습니다로그인 후 Devise - session_id가있는 장바구니가 변경됨
이 필터
def create_session session_id = request.session_options[:id] if session_id session = Session.find_or_create_by_session_id(session_id) if session.user_id && !user_signed_in? session.update_attribute(:user_id, nil) end end end
전에에서 application_controller에 그리고이 인증 후 필터 이전에
def update_user_session session_id = request.session_options[:id] user_id = user_signed_in? ? current_user.id : nil session = Session.find_by_session_id(session_id) if (session && session.user_id.nil?) Session.delete_all(user_id: user_id) session.update_attribute(:user_id, user_id) end end