我需要一种方法来改变商店中产品的状态,以便在购买完成后再出售......
我使用以下代码:
if @order.purchase #I use active merchant's purchase method on compiled order
update_product_status #method explained below
end
在将产品复制为line_item之前,将运行以下代码:
@product = Product.find(params[:product_id]) #line_item belongs to product and cart
session[:pending_purchase] = @product.id #stores ID number into session
以后我可以提取ID,以获取update_product_status代码:
def update_product_status #used to update boolean 'sold' status on product
product = session[:pending_purchase]
@sold_product = Product.find(product)
@sold_product.update(:sold = true) #not sure if this syntax is correct
end
如果有人购买了两件物品,可能会出现问题。如果创建了第二个line_item并将其添加到购物车,那么ID:pending_purchase中的ID是否会被覆盖?我如何访问这两个变量并确保这两个项目现在都有'sold = true'属性?
答案 0 :(得分:1)
最简单的方法是将产品的id存储为数组。
@product = Product.find(params[:product_id])
(session[:pending_purchase] ||= []) && (session[:pending_purchase] << @product.id )
您将在使用它时找到更多产品:
@products = Product.find(session[:pending_purchase])
@products.each do |p|
.........
end