我有
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