摘自著名的敏捷 Web 开发与 Rails 书(最新版)中的片段:
def create
@cart = current_cart
product = Product.find(params[:product_id])
@line_item = @cart.line_items.build(product: product)
这适用于一般的电子商务/仓库应用程序,此功能适用于特定产品的“添加到购物车”按钮。这是我感到困惑的地方:
我想象的代码是:
@line_item = line_items.build(product: product)
@line_item = line_items.build(cart: @cart)
基本上,如果 aline_item
既属于产品又属于购物车,我会分别创建这些关系。
另外,如果购物车还line_items
没有,那我该怎么办@cart.line_items
?我知道line_items.build(product: product)
将返回给我一个line_item
对象(我保存到@line_item
),但是如果购物车中还没有对象,如何cart.line_items
工作line_items
?