Noa*_* B. 38 sql activerecord ruby-on-rails
你怎么用Rails方式写的?我有一个模特 - 经理.我想从管理器中删除满足manager_level为5的条件的所有记录.
谢谢.
Mur*_*foX 71
我认为最好使用destroy而不是delete
因为破坏会从数据库从数据库以及其相关的儿童记录删除当前对象记录(/sf/answers/1593035951/)
delete也会跳过回调,但destroy不会.
Manager.where(:manager_level => 5).destroy_all
Run Code Online (Sandbox Code Playgroud)
And*_*are 34
试试这个:
Manager.delete_all(manager_level: 5)
Run Code Online (Sandbox Code Playgroud)
小智 17
这应该工作:
Manager.where(:manager_level => 5).delete_all
Run Code Online (Sandbox Code Playgroud)
注意:这不会删除相关记录.
在 Rails 5.1. 之后,我们不能向delete_all/destroy_all方法传递条件
Manager.where(:manager_level => 5).delete_all
Run Code Online (Sandbox Code Playgroud)
这将运行多个查询以删除每条记录
但是在 Rails 6 中,我们可以使用 delete_by 来删除使用条件,
Manager.delete_by(manager_level: 5)
Run Code Online (Sandbox Code Playgroud)
这将运行单个删除查询
delete from managers where manager_level = 5
| 归档时间: |
|
| 查看次数: |
35459 次 |
| 最近记录: |