我正在寻找从表中删除记录的最佳方法。例如,我有一个用户,其用户 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
delete_all
id
我看到它destroy_all调用了destroy所有关联对象的函数,但我只想确认正确的方法。
destroy
你说的对。如果您想删除用户和所有关联对象 ->destroy_all 但是,如果您只想删除用户而不抑制所有关联对象 ->delete_all
根据这篇文章:Rails :dependent => :destroy VS :dependent => :delete_all
delete