Ruby on rails 如何防止向购物车添加相同的产品
在我的电子商务脚本中,相同的产品可以添加到购物车中,我如何防止它Ruby on rails 如何防止向购物车添加相同的产品,ruby-on-rails,ruby-on-rails-5,Ruby On Rails,Ruby On Rails 5,在我的电子商务脚本中,相同的产品可以添加到购物车中,我如何防止它 def add @cart.save if @cart.new_record? session[:cart_id] = @cart.id product = Product.find(params[:id]) LineItem.create! :order => @cart, :product => product, :price => product.price @car
def add
@cart.save if @cart.new_record?
session[:cart_id] = @cart.id
product = Product.find(params[:id])
LineItem.create! :order => @cart, :product => product, :price => product.price
@cart.recalculate_price!
flash[:notice] = "Item added to cart!"
redirect_to '/cart'
end
添加对Cart.product_id的验证,按Cart.id确定范围:
class购物车
但是要小心
更新:如果没有实际的购物车
模型,则将验证添加到行项目
:
类行项
更新2:refactoradd
方法,使用find\u或\u initialize\u by
:
def添加
@cart.save if@cart.new_记录?
会话[:cart\u id]=@cart.id
product=product.find(参数[:id])
line\u item=line item.find\u或\u initialize\u by(订单:@cart,
产品:产品)
行\项目价格=产品价格
行_item.save!
@购物车。重新计算价格!
flash[:notice]=“商品已添加到购物车!”
将_重定向到“/cart”
终止
更新3:检查产品是否存在:
def添加
@cart.save if@cart.new_记录?
会话[:cart\u id]=@cart.id
product=product.find(参数[:id])
行项目=行项目。查找方式(订单:@cart,产品:product)
if行_项
注意=“错误:产品已在购物车中”
其他的
LineItem.create!(订单:@cart,
产品:产品,,
价格:产品。价格)
@购物车。重新计算价格!
注意=“商品已添加到购物车!”
终止
闪光[通知]=通知
将_重定向到“/cart”
终止
它不起作用,因为我没有购物车模型和购物车表。我有一个lineitem表,正在链接到带有order_id列的order表将验证添加到lineitem模型。请参阅我的更新。此操作有效,但会出现500个错误。我需要在控制器中执行此操作,因为产品的数量可能需要增加。再次感谢您不要在控制器上验证!使用而不是create代码>行items.works但给出了一个添加的项目通知能否为此处提到的模型添加db模式?