gpt4 book ai didi

ruby-on-rails - delete_all vs destroy_all?

转载 作者:数据小太阳 更新时间:2023-10-29 06:16:43 25 4
gpt4 key购买 nike

我正在寻找从表中删除记录的最佳方法。例如,我有一个用户,其用户 ID 跨多个表。我想删除这个用户和所有表中有他 ID 的每条记录。

u = User.find_by_name('JohnBoy')
u.usage_indexes.destroy_all
u.sources.destroy_all
u.user_stats.destroy_all
u.delete

这有效并从所有表中删除用户的所有引用,但我听说 destroy_all 的处理量很大,所以我尝试了 delete_all。它只会从他自己的用户表中删除用户,并将所有其他表中的 id 设为空,但保留其中的记录。有人可以分享执行这样的任务的正确过程是什么吗?

我看到 destroy_all 对所有关联对象调用了 destroy 函数,但我只想确认正确的方法。

最佳答案

你是对的。如果你想删除用户和所有关联的对象 -> destroy_all但是,如果您只想删除用户而不抑制所有关联对象 -> delete_all

根据这篇文章:Rails :dependent => :destroy VS :dependent => :delete_all

  • destroy/destroy_all:通过调用 destroy 方法将关联对象与该对象一起销毁
  • delete/delete_all:所有关联的对象都被立即销毁,而不调用它们的 :destroy 方法

关于ruby-on-rails - delete_all vs destroy_all?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6698207/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com