我正在开发用于创建购物网站特价商品的功能。一个产品可以有一个以上的特殊产品,显然一个特殊产品可以有一个以上的产品。
我正在使用has_and_belongs_to_many
关系,所以我已经声明:
产品.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
从特价中删除,因此@special.products.first==nil
,但是@product
仍然包含 @special
,换句话说@products.specials.first==@special
除了编写delete方法之外,是否有任何适当的方法可以在单个调用中做到这一点?
最佳答案
According to the Rails documentation:
Brilliant reference here for you
您可以使用:
product = Product.find(x)
special = product.specials.find(y)
product.specials.delete(special)
这会为您要删除的两个对象创建ActiveRecord对象,从而为函数提供了清晰的定义
在此示例中:
product = Product.find(x)
product.specials.clear
关于ruby-on-rails - Rails HABTM-正确删除关联,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21278986/