gpt4 book ai didi

ruby-on-rails - 在多对多关系中删除不对称?

转载 作者:行者123 更新时间:2023-12-02 00:17:56 25 4
gpt4 key购买 nike

我有两个模型,Product 和 Category,还有一个用于多对多关系的连接表 Categorizations。

假设我有两个对象,产品和类别,它们是上述的实例。

products = Product.new(...)
category = Category.new(...)
product.categories << category

这成功地在 rails 控制台中创建了两个方向的关系,以便:
product.categories
category.products

都是非空的。下一个:
product.categories.delete category

将从产品对象和连接表中删除该值。但是它不会从类别对象中删除它,因此:
category.products

非空,这意味着内存中的 category.products 对象与实际数据库不同步。我觉得奇怪的是,创建会对称地工作,但删除不会。

以下是相关型号:
class Product < ActiveRecord::Base
has_many :categorizations, dependent: :destroy
has_many :categories, through: :categorizations, :uniq => true
end

class Category < ActiveRecord::Base
has_many :categorizations, dependent: :destroy
has_many :products, through: :categorizations, :uniq => true
end

class Categorization < ActiveRecord::Base
belongs_to :product, class_name: "Product"
belongs_to :category, class_name: "Category"

validates :product, presence: true
validates :category, presence: true
end

有任何想法吗?谢谢!

最佳答案

答案:它是 product.reload

这个解释是我在数小时搜索后找到的第一个解释:
https://stackoverflow.com/a/7449957/456280

关于ruby-on-rails - 在多对多关系中删除不对称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12308065/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com