我是ROR的新手。我正在建设电子商务网站。在购物车中,如果我尝试添加产品,则在之前未添加产品时添加。现在我想如果用户添加相同的产品,那么它的数量应该增加。
这是carts_controller.rb中的add_to_cart方法,提前谢谢。
def add_to_cart
@cart = Cart.find_by_Product_id_and_User_id( params[:product_id], current_user.id)
if @cart.nil?
@cart = Cart.create(:User_id => current_user.id, :Product_id => params[:product_id], :Quantity => '1')
else
@cart.update(:Quantity +=> '1')
end
redirect_to view_cart_path
end
答案 0 :(得分:1)
您的架构看起来很奇怪:为什么购物车有产品ID?这表明购物车“属于”产品,这是错误的。我希望每个用户都有一个购物车,并且购物车可以通过连接表获得产品列表。像这样:
class User
has_one :cart
end
#user_id
class Cart
belongs_to :user
has_many :cart_products
has_many :products, :through => :cart_products
end
#cart_id, product_id, :quantity
class CartProduct
belongs_to :cart
belongs_to :product
end
#various fields to do with the specific product
class Product
has_many :cart_products
has_many :carts, :through => :cart_products
end
如果这是架构,那么我会像这样处理数量更新:
#in Cart class
def add_product(product)
if cart_product = self.cart_products.find_by_product_id(product.id)
cart_product.quantity += 1
cart_product.save
cart_product
else
self.cart_products.create(:product_id => product.id, :quantity => 1)
end
end