2009-12-15 5 views
1

안녕하세요 저는 레일 전자 상거래 앱의 장바구니 기능에 추가하여 구현하는 데 문제가 있습니다. 여기서는 체크 아웃 기능에 대해 언급하지 않습니다. 그냥 "장바구니에 추가". 사용자가 계정에 로그인하지 않고 항목을 장바구니에 추가 할 수 있습니다. 사용자가 장바구니에 추가를 완료하면 체크 아웃 전에 사용자가 로그인하게됩니다. 여기 내 문제는 장바구니에 추가 된 항목을 저장하는 가장 좋은 방법입니다. 세션을 사용하려고합니다. 사용자가 어떤 수량의 카트 하나에 하나의 제품을 추가하면 쉽게 구현할 수 있습니다. 그러나 사용자가 수량이 다른 여러 항목을 체크 아웃하면 정보를 임시로 저장하는 방법. 이 정보를 저장하기위한 데이터 구조가 필요하지만 사용할 데이터 구조를 알지 못합니다. 나는 이런 식으로 뭔가 의미 :레일에서 세션 기반의 "장바구니에 추가"기능을 구현하는 방법

내가 하나 개의 항목을 저장할 수 있습니다 해시를 사용하지만 어떻게 여러 항목을 저장하기 위해 .....

Session_id | product_id | quantity 
wisidiri4i | 1234  | 3  
349sksksks | 3452  | 6 

등등을 ?? DB 테이블을 사용하면이 작업을 수행 할 수는 있지만 사용자가 장바구니에 항목을 추가하고 체크 아웃하지 않고 나가면 테이블에서 해당 레코드를 삭제하는 방법은 무엇입니까?

여기에 붙어 있습니다. 도움이 될 것입니다. 감사합니다.

답변

0

일반적으로 제품을 저장하려면 데이터베이스와 함께 세션 ID를 사용해야합니다. 이렇게하면 세션 정보가 최소한으로 유지되고 (ID 만) 유연성이 최대로 제공됩니다. IMO는 이와 같은 데이터 구조를 세션 저장소에 넣는 것은 좋지 않은 생각입니다. 나중에 데이터 구조를 변경하기로 결정했다면 어떨까요? 데이터 구조의 이전 버전과 새 버전을 모두 지원해야합니다.

db-based 솔루션의 문제점은 언젠가 데이터베이스에서 구입하지 않은 항목을 지워야한다는 것입니다. 이것은 일반적으로 주기적으로 수행됩니다 (예 : X 일이 지난 카트가 삭제됨). 데이터베이스의 크기에 따라 시간대가 달라질 수 있습니다 (3 개월 ~ 6 개월 후에 카트가 제거되는 경우 얼마나 커질 수 있습니까?). 미래의 어느 시점에서 돌아올 가능성이 있습니다 (3 개월 후? 6 개월?).

여기에 유일한 제한은 세션 데이터가 얼마나 긴
Session_id | Items 
892jsls098s | sku1:3,sku2:4,sku3:2 

: 당신이 세션에서 정보를 저장하려는 경우

는, 그때는 아마 간단한 직렬화의 몇 가지 유형, 예를 수행 할 것 (길이 검사를 확실히 추가하십시오).

관련 문제