我正在为一个购物网站开发一个创建特价商品的功能.一种产品可以有不止一种特殊产品,很明显,一种特殊产品可以有不止一种产品..

我使用has_and_belongs_to_many人的关系,所以我声明:

产品rb

has_and_belongs_to_many :specials

特殊的rb

has_and belongs_to_many :products

现在,有了一个产品@product和一个特殊的@special,一个关联就这样建立了..

@special.products << @product

这样做之后,以下是正确的:

@special.products.first == @product

and, importantly:

@product.specials.first == @special

当我用这个删除关联时

@special.products.delete(@product)

然后@product从特价中删除,所以@special.products.first==nil,然而@product still contains @special,换句话说@products.specials.first==@special

除了编写一个delete方法,还有什么合适的方法可以在一次调用中实现这一点吗?

推荐答案

According to the Rails documentation:

collection.delete(object, …)

从中删除一个或多个对象

Brilliant reference here for you

你可以使用:

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

product.specials.delete(special)

这将为您试图删除的两个对象创建ActiveRecord对象,这为函数提供了清晰的定义

collection.clear

从列表中删除所有对象

在本例中:

product = Product.find(x)

product.specials.clear

Ruby-on-rails相关问答推荐

Rails 7 Active Record::SessionStore -如何获取控制器中当前会话的数据库ID?

form_with正在try 用错误的路径生成操作

RSpec系统测试无法从工厂访问新创建的记录

是否从已转换为字符串的数组中提取符号?

为什么 2 个关键字参数被解释为 1?

Ruby/Rails 相当于 Python 的 sys.addAuditHook

使用has_many_through关联创建记录 – Ruby on Rails

为什么是 json.partial!使用新的哈希语法传递本地时,jbuiler 模板中的行不执行?

比较 Rails 中的日期

Restful Rails 编辑与更新

Rails 中页面视图的简单计数器

Rails data-disable-with re-enable 按钮

在 factory_girl 中填充与 children 的关联

Rails 3.1 Sprockets 需要指令 - 有没有办法排除特定文件?

Rails Rake 任务 - 访问模型类

非持久 ActiveRecord 模型属性

ActiveRecord 事务中的错误处理?

如何在 Ruby 中搜索数组?

Rails:如何在rails中使用dependent::destroy?

如何删除删除选项表单 activeAdmin?