加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – Rails,删除子节点而不删除父节点:has_many

发布时间:2020-12-17 04:33:39 所属栏目:百科 来源:网络整理
导读:我有 class MyContainer ActiveRecord::Base :has_many MyObjects,:dependent = :destroyend 我想删除容器中的所有MyObjects而不必删除MyContainer.我的模型确实有:dependent = :destroy,但是我不想删除并重新创建对象,因为它比较慢. 这样的东西不起作用:
我有
class MyContainer < ActiveRecord::Base
  :has_many MyObjects,:dependent => :destroy
end

我想删除容器中的所有MyObjects而不必删除MyContainer.我的模型确实有:dependent => :destroy,但是我不想删除并重新创建对象,因为它比较慢.

这样的东西不起作用:

@obj = MyContainer.find_by_id(10)
@obj.my_objects.delete_all

我怎么能做到这一点?

解决方法

delete_all是一个ActiveRecord :: Base类方法.

你应该使用destroy_all.像:

@container = MyContainer.find_by_id(10)
@container.my_objects.destroy_all

如果您不需要先查找MyContainer(或将其用于其他内容),那么正确使用delete_all会更快

MyObject.delete_all(["my_container_id = ?",10])

编辑:对于rails 3

MyObject.where(my_container_id: 10).delete_all

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读