ruby-on-rails - 如何准确删除一个 has_and_belongs_to_many 关联?
问题描述
“拥有并属于许多”允许在相同对象之间有多个关联。因此,我正在尝试实现其中可能包含一些产品的购物车。
# /app/models/cart.rb
class Cart < ApplicationRecord
has_and_belongs_to_many :products
end
.
# /app/models/product.rb
class Product < ApplicationRecord
has_and_belongs_to_many :carts
end
但是,当我尝试删除一个多对多关联时,它会将它们全部删除:
@cart = Cart.last
@product = Product.last
3.times { @cart.products << @product }
@cart.products.delete(@product)
puts @cart.products.count
# Returns 0; should be 2
有没有办法只删除一个关联?
解决方案
你可以这样做。
cart = Cart.find(card_id)
product = cart.products.find(product_id)
cart.products.delete(product)
推荐阅读
- mysql - 锁定共享模式和更新,而不是 MariaDB 中的任何内容
- c# - 将一个模型从 ViewModel 发送回控制器
- reactjs - 为什么 useState 钩子会导致 React 中不必要的重新渲染循环?
- java - 找到成对产品的最大和
- angular - 如何在Angular的ngFor中首先显示最后一项?
- java - 在 Android 或 Java 中,有没有办法调整二维矩阵的大小
- sql - Google Cloud + SQL 上的 Spring Cloud 函数
- java - 在显示时修改 javafx 标签属性
- excel - 仅将非空单元格复制并粘贴到同一范围
- kubernetes - Kubernetes 集群行为