我正在为购物网站开发创建特色的功能.一个产品可以有多个特殊的,显然一个特殊的可以有多个产品..
我正在使用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)