如何在Rails 3中一次销毁多个对象

我有一个试图一次删除多个对象的Rails应用程序。

我已经尝试像发送一套由','分隔符到轨摧毁方法,但它只销毁单个对象。 是否有可能删除导轨3中的多个对象。

3 Solutions collect form web for “如何在Rails 3中一次销毁多个对象”

destroy_all通过为每个实例化logging调用destroy方法破坏匹配条件的logging。 所以对象的callback被执行。

Model.destroy_all(:status => "inactive") Model.where(:id => [1,2,3,4,5]).destroy_all Model.where(:id => 1..5).destroy_all 

UPDATE

 User.where(:id => params[:ids]).destroy_all /users?ids[]=1&ids[]=2&ids[]=3 
 Model.delete([1,2,5,6]) 

要么

 Model.delete_all(["col_name in (?)", [1,2,5,6]]) 

只要通过ids数组

如果性能对您很重要,并且/或者您处理大型数据集,则应该优先使用delete_all over destroy_all。

Destroy_all将一次执行一个DELETE查询。 所以它可能非常慢。 有关delete_all和destroy_all之间区别的更多细节可以在此页面find。

由于@M库马尔的答案将被弃用新的铁路版本。

 Model.delete_all(["col_name in (?)", [1,2,5,6]]) DEPRECATION WARNING: Passing conditions to delete_all is deprecated and will be removed in Rails 5.1. 

这个命令可能会在未来帮助别人:

 Model.where(id: [1,2,5,6]).delete_all 
  • 使用Rails的form_for,但在<form>元素上设置自定义类,属性?
  • Heroku推送被拒绝,没有检测到雪松支持的应用程序
  • 如何在Heroku上重新启动rails服务器?
  • 新的+保存和创build之间的轨道差异
  • 如何在Rails 3中删除迁移文件
  • find,where和find_by_id有什么区别?
  • Rails - 如何在控制器中使用助手
  • WARN无法确定响应主体的内容长度。 设置响应的内容长度或设置响应#chunked = true
  • Rails 3 ActiveRecord:按关联计数
  • 在视图中显示载波文件名
  • 捆绑安装和rbx-require-relative