【发布时间】:2011-10-05 14:34:24
【问题描述】:
我正在寻找从表中删除记录的最佳方法。例如,我有一个用户,其用户 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 函数,但我只想确认正确的方法。
【问题讨论】:
标签: ruby-on-rails ruby database activerecord