带有主键的Rails has_and_belongs_to删除destroy上的所有记录

时间:2018-01-29 14:16:19

标签: mysql ruby-on-rails ruby

我在Rails 5中有3个模型:

产品

 class Product < ApplicationRecord

    belongs_to :category
    has_and_belongs_to_many :stores

 end

商品

  class Store < ApplicationRecord
    has_many :admin_users
    has_and_belongs_to_many :roles
    has_and_belongs_to_many :products
  end

ProductsStores

  class ProductsStores < ApplicationRecord
    self.primary_key = :store_id
  end

当我尝试使用命令 ProductsStores.first.destroy 删除连接表 ProductsStores 的一条记录时,将销毁连接表中的所有记录。为什么呢?

有人可以帮助我吗?

提前谢谢!

1 个答案:

答案 0 :(得分:0)

首先,您必须了解HABTM和has_many之间的差异: http://guides.rubyonrails.org/association_basics.html#the-has-and-belongs-to-many-association 如果您创建了linkedin模型并想要使用此模型,则必须使用has_many through: association,并添加到此模型belongs_to :productbelongs_to :store。然后使用标志dependent: :destroy,您可以销毁或不销毁链接模型作为默认值。