如何在会话中存储和使用多个 cart_ids
How to store and use multiple cart_ids in a session
我希望任何人都能指出正确的方向,因为我已经为这个问题绞尽脑汁好几天了。
一个网站列出了多个商店,每个商店都有一个展示页面,用户可以从中 select 并将产品添加到(会话)购物车。每个商店都有对应的购物车。用户为每个购物车执行单独的结帐过程。在 carts#index 页面上,用户可以看到活动购物车的概览。
我发现下面的代码片段完全有效。然而,当尝试升级 set_cart 方法以包含多个购物车时,我自己的逻辑和想法失败了。
module CurrentCart
private
def set_cart
@cart = Cart.find(session[:cart_id])
rescue ActiveRecord::RecordNotFound
@cart = Cart.create
session[:cart_id] = @cart.id
end
end
一种有效但可扩展性不强的方法是为整个网站创建一个会话购物车,然后发送一个商店实例进行过滤(即@cart.items_for_shop(@shop)。问题是购物车实例和商店实例都需要在应用程序中随处可用。为每个商店设置一个单独的 cart_id 会更有意义。
您将如何处理在会话中存储多个购物车?
非常感谢
我可能会选择拥有 ParentCart、MetaCart 或任何您想称呼每个商店的所有购物车所属的东西的路线。让我们以 UberCart
为例。
因此,您的 set_cart
方法找到或创建了一条 UberCart
记录,与您目前对普通 Cart
.
完全相同
接下来,对于每家商店,在您创建 UberCart
时,或者稍后您查看商店时...由您决定,您创建一个 Cart
,它本质上是在你的 UberCart
和选择的 Shop
之间加入 table。
然后 Shop
中的 LineItem
会附加到正确的 Cart
,可以从会话中的 UberCart
访问它。
在您的 CartController#index
操作中,您可以使用 @uber_cart.carts
访问属于此 UberCart
.
的所有购物车
我希望任何人都能指出正确的方向,因为我已经为这个问题绞尽脑汁好几天了。
一个网站列出了多个商店,每个商店都有一个展示页面,用户可以从中 select 并将产品添加到(会话)购物车。每个商店都有对应的购物车。用户为每个购物车执行单独的结帐过程。在 carts#index 页面上,用户可以看到活动购物车的概览。
我发现下面的代码片段完全有效。然而,当尝试升级 set_cart 方法以包含多个购物车时,我自己的逻辑和想法失败了。
module CurrentCart
private
def set_cart
@cart = Cart.find(session[:cart_id])
rescue ActiveRecord::RecordNotFound
@cart = Cart.create
session[:cart_id] = @cart.id
end
end
一种有效但可扩展性不强的方法是为整个网站创建一个会话购物车,然后发送一个商店实例进行过滤(即@cart.items_for_shop(@shop)。问题是购物车实例和商店实例都需要在应用程序中随处可用。为每个商店设置一个单独的 cart_id 会更有意义。
您将如何处理在会话中存储多个购物车?
非常感谢
我可能会选择拥有 ParentCart、MetaCart 或任何您想称呼每个商店的所有购物车所属的东西的路线。让我们以 UberCart
为例。
因此,您的 set_cart
方法找到或创建了一条 UberCart
记录,与您目前对普通 Cart
.
接下来,对于每家商店,在您创建 UberCart
时,或者稍后您查看商店时...由您决定,您创建一个 Cart
,它本质上是在你的 UberCart
和选择的 Shop
之间加入 table。
Shop
中的 LineItem
会附加到正确的 Cart
,可以从会话中的 UberCart
访问它。
在您的 CartController#index
操作中,您可以使用 @uber_cart.carts
访问属于此 UberCart
.