Dex*_*Dex 7 children ruby-on-rails has-many
我有
class MyContainer < ActiveRecord::Base
:has_many MyObjects, :dependent => :destroy
end
Run Code Online (Sandbox Code Playgroud)
我想删除MyObjects容器中的所有内容,而不必删除MyContainer.我的模型确实有:dependent => :destroy,但我不想删除和重新创建对象,因为它更慢.
这样的东西不起作用:
@obj = MyContainer.find_by_id(10)
@obj.my_objects.delete_all
Run Code Online (Sandbox Code Playgroud)
我怎么能做到这一点?
mač*_*ček 25
delete_all是一种ActiveRecord::Base类方法.
你应该用destroy_all.就像是:
@container = MyContainer.find_by_id(10)
@container.my_objects.destroy_all
Run Code Online (Sandbox Code Playgroud)
delete_all如果您不需要先查找MyContainer(或将其用于其他内容),正确使用会更快
MyObject.delete_all(["my_container_id = ?", 10])
Run Code Online (Sandbox Code Playgroud)
编辑:对于rails 3
MyObject.where(my_container_id: 10).delete_all
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11592 次 |
| 最近记录: |