ruby-on-rails – Rails HABTM – 正确删除关联

前端之家收集整理的这篇文章主要介绍了ruby-on-rails – Rails HABTM – 正确删除关联前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在为购物网站开发创建特色的功能.一个产品可以有多个特殊的,显然一个特殊的可以有多个产品..

我正在使用has_and_belongs_to_many关系,所以我已经声明:

Product.rb

has_and_belongs_to_many :specials

Special.rb

has_and belongs_to_many :products

现在,通过产品@product和特殊的@special,会创建一个关联.

@special.products << @product

这样做之后,以下是事实:

@special.products.first == @product

重要的是:

@product.specials.first == @special

当我删除关联使用这个

@special.products.delete(@product)

那么@product从specials中删除,所以@ special.products.first == nil,然而@product仍然包含@special,换句话说@ products.specials.first == @ special

除了写一个删除方法之外,还有什么正确的方法,在一个通话中这样做?

解决方法

According to the Rails documentation:

collection.delete(object,…)

Removes one or more objects from the
collection by removing their associations from the join table. This
does not destroy the objects.

Brilliant reference here for you

我想你可以使用:

products = Product.find(x)
special = products.specials.find(y)

products.specials.delete(y)

这将为您尝试删除对象创建ActiveRecord对象,这将为该功能提供清晰的定义

猜你在找的Ruby相关文章