Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如何防止向购物车添加相同的产品_Ruby On Rails_Ruby On Rails 5 - Fatal编程技术网

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:refactor
add
方法,使用
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模式?