您如何以 Rails 方式编写代码?我有一个模型 - 经理。我想删除满足 manager_level 为 5 条件的 Managers 中的所有记录。
谢谢你。
您如何以 Rails 方式编写代码?我有一个模型 - 经理。我想删除满足 manager_level 为 5 条件的 Managers 中的所有记录。
谢谢你。
我认为最好使用destroy而不是delete
因为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