[英]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.