Rails 使用 Where 条件删除控制台

Rails Console Deletion using Where Condition

在 Rails 控制台的我的 Rail 应用程序中,我想删除其 creater_id = 如下所示 ID 的客户:

Customer.where(creater_id: 5).delete_all

最好的方法是什么 ( 因为 rails 为同一任务提供了不同的方法 我很想知道任何其他实现方法与在性能方面更优化和对 DB 的影响相同)根据使用 "where" ?

的特定条件删除使用 rails 条件

这完全取决于你真正想做什么:

    destroy_all 相比,
  • delete_all 是一种更快的方法,因为删除不检查依赖项。它只会删除调用它的单个 table 的行。

  • destroy_all用于删除模型的所有依赖项。

例如,如果 Student 有很多 courses

  • 调用 User.where(some: 'some').delete_all 将删除所有用户,但学生与课程的关联仍将存在于关联 table 中。
  • 调用User.where(some: 'some').destroy_all将删除所有用户以及课程关联。