Ruby on rails Rails,使用:has\u many删除子项而不删除父项

Ruby on rails Rails,使用:has\u many删除子项而不删除父项,ruby-on-rails,children,has-many,Ruby On Rails,Children,Has Many,我有 我怎样才能做到这一点呢?其中一项或两项都可以: @obj = MyContainer.find_by_id(10) @obj.my_objects.delete_all 是一个ActiveRecord::Base类方法 你应该使用。比如: MyContainer.find(10).my_objects.destroy_all MyContainer.find(10).my_objects.each(&:destroy) 如果您不需要先查找您的MyContainer(或将其用

我有


我怎样才能做到这一点呢?

其中一项或两项都可以:

@obj = MyContainer.find_by_id(10)
@obj.my_objects.delete_all
是一个
ActiveRecord::Base
类方法

你应该使用。比如:

MyContainer.find(10).my_objects.destroy_all

MyContainer.find(10).my_objects.each(&:destroy)

如果您不需要先查找您的
MyContainer
(或将其用于其他内容),正确使用
delete\u all
会更快


编辑:适用于rails 3

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

您可以直接删除对象,如下所示

MyObject.where(my_container_id: 10).delete_all

使用后者,解决方案会将每个对象加载到内存中,速度会很慢。可能想使用第一个解决方案。两者都将每个对象实例化到内存中。
MyObject.delete_all(["my_container_id = ?", 10])
MyObject.where(my_container_id: 10).delete_all
MyObject.delete_all(["my_container_id=?", 10])