繁体   English   中英

Rails - 删除所有符合条件的记录

[英]Rails - Delete all Records that Meet a Condition

你是如何用 Rails 的方式写的? 我有一个模型 - 经理。 我想从 Managers 中删除满足 manager_level 为 5 条件的所有记录。

谢谢你。

我认为最好使用销毁而不是删除

因为 destroy 将从 db 中删除当前对象记录,并从 db ( https://stackoverflow.com/a/22757656/5452072 ) 中删除其关联的子记录

delete 也会跳过回调,但 destroy 不会。

Manager.where(:manager_level => 5).destroy_all

试试这个:

Manager.delete_all(manager_level: 5)

这应该有效:

Manager.where(:manager_level => 5).delete_all

注意:这不会删除相关记录。

在 Rails 5.1. 之后,我们不能向delete_all/destroy_all方法传递条件

Manager.where(:manager_level => 5).delete_all

这将运行多个查询以删除每条记录

但是在 Rails 6 中,我们可以使用 delete_by 来删除使用条件,

Manager.delete_by(manager_level: 5)

这将运行单个删除查询

delete from managers where manager_level = 5

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM