1

こんにちは、Rails e コマース アプリでカートに追加機能を実装する際に問題があります。ここでは、チェックアウト機能について話しているわけではありません。「カートに入れる」だけ。ユーザーがアカウントにログインしなくても、アイテムをカートに追加できます。ユーザーがカートへの追加を完了すると、チェックアウトする前にユーザーがログインします。ここでの問題は、カートに追加されたアイテムを保存する最良の方法です。セッションを使用しようとしています。ユーザーが任意の数量の製品を 1 つだけカートに追加すると、これを簡単に実装できます。ただし、ユーザーが数量の異なる複数のアイテムをチェックアウトした場合に、情報を一時的に保存する方法。この情報を格納するためのデータ構造が必要ですが、どのデータ構造を使用すればよいかわかりません。私は次のようなことを意味します:

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

等々.....

ハッシュを使用すると、1 つのアイテムを保存できますが、複数のアイテムを保存するにはどうすればよいですか?? DBテーブルを使用してこれを行うことができますが、ユーザーがカートにアイテムを追加してチェックアウトせずに去った場合、テーブルからそれらのレコードを削除する方法は?

私はここで立ち往生しています。どんな助けでも大歓迎です。ありがとう

4

1 に答える 1

1

一般に、セッション ID とデータベースを使用して製品を保存する必要があります。これにより、セッション情報が最小限 (ID のみ) に保たれ、最大限の柔軟性が得られます。IMO このようなデータ構造をセッション ストアに入れるのは悪い考えです。後でデータ構造を変更することにした場合はどうでしょうか。データ構造の古いバージョンと新しいバージョンの両方をサポートする必要があります。

お気づきのように、データベース ベースのソリューションの問題は、ある時点で未購入のアイテムをデータベースから消去する必要があることです。これは通常、定期的に行われます (たとえば、X 日以上経過したカートは削除されます)。時間枠は、データベースのサイズ (カートが 3 か月後に削除された場合、6 か月後にどれくらい大きくなるか) に基づいて決定されます。将来のある時点で戻る可能性があります (3 か月後? 6 か月後?)。

情報をセッションに保存することにした場合は、おそらく次のような単純なシリアル化を行う必要があります。

Session_id  |  Items
892jsls098s |  sku1:3,sku2:4,sku3:2

ここでの唯一の制限は、セッション データの長さです (必ず長さチェックを追加してください)。

于 2009-12-16T03:26:02.633 に答える