Rails HABTM-正确删除关联

马可·普林斯

我正在开发用于创建购物网站特价商品的功能。一个产品可以有一个以上的特殊产品,显然一个特殊产品可以有一个以上的产品。

我正在使用一种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方法之外,是否有任何适当的方法可以在单个调用中做到这一点?

理查德·派克

根据Rails文档:

collection.delete(object,…)

通过从联接表中删除对象的关联,从集合中删除一个或多个对象。这不会破坏对象。

辉煌的参考在这里为您

您可以使用:

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

product.specials.delete(special)

这会为您要删除的两个对象创建ActiveRecord对象,从而为函数提供了清晰的定义

清除

通过从联接表中删除它们的关联,从集合中删除所有对象。这不会破坏对象。

在此示例中:

product = Product.find(x)

product.specials.clear

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Rails 5 HABTM关联

来自分类Dev

Rails HABTM关联与重命名的类

来自分类Dev

rails_admin无法删除HABTM对象

来自分类Dev

Rails关联has_many通过代替HABTM

来自分类Dev

Rails中的HABTM关联:收集并计算模型子级的类别

来自分类Dev

Rails 4 HABTM自定义关联验证

来自分类Dev

Rails关联:通过控制台访问联接表(HABTM)

来自分类Dev

Rails关联has_many通过代替HABTM

来自分类Dev

更新HABTM模型关联只会删除关联

来自分类Dev

更新HABTM模型关联只会删除关联

来自分类Dev

如何以正确的方式在Rails上保存HABTM关系

来自分类Dev

Rails HABTM显示并选择

来自分类Dev

CakePHP显示HABTM关联

来自分类Dev

HABTM关联表格

来自分类Dev

如何在Rails 4中干净地更新HABTM关联列表?

来自分类Dev

HABTM与Strong Parameters的关联不会在Rails 4中保存用户

来自分类Dev

CakePHP HABTM删除

来自分类Dev

HABTM关联未保存-CakePHP

来自分类Dev

Rails:查找嵌套HABTM关系中的记录

来自分类Dev

创建特定范围的HABTM Rails 6

来自分类Dev

Rails,无法通过HABTM关系获得价值

来自分类Dev

如何在Rails中覆盖HABTM表

来自分类Dev

Rails 4 HABTM Select2

来自分类Dev

在Rails中使用HABTM关系设置范围

来自分类Dev

Rails关联和删除

来自分类Dev

使用工厂女孩创建HABTM关联

来自分类Dev

HABTM关联:不允许的参数

来自分类Dev

CakePHP HABTM仅查找关联的模型数据

来自分类Dev

ActiveRecord生成错误的关联HABTM名称