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

前端之家收集整理的这篇文章主要介绍了ruby-on-rails – Rails,删除子节点而不删除父节点:has_many前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有
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

猜你在找的Ruby相关文章