我有两个模型相互关联。
例如,一个订单包含许多订单项目。
如果存在匹配项(即:已经是具有相同 SKU 的订单项(,我想增加订单项数量。这是在 Ruby 中执行此操作的最佳方式吗?
switch = false
order.order_items.each do |item|
if item.sku == test.sku
item.increment!(:quantity)
switch = true
end
end
我最初试图做这样的事情:
if order.order_items.where(sku: test.sku).length > 0
order_item = order.order_items.where("sku = ?", test.sku).take
order_item.increment!(:quantity)
end
但我最终遇到了一些错误。
谢谢
您可以使用一个查询来执行此操作,而无需获取数据并循环访问它,如下所示:
order.order_items.where(sku: test.sku).update_all("quantity = quantity + 1")
注意:update_all
跳过验证和回调