gpt4 book ai didi

ruby-on-rails - rails : delete cascade vs dependent destroy

转载 作者:行者123 更新时间:2023-11-29 11:08:01 26 4
gpt4 key购买 nike

假设我有两个表:usersorders。一个用户有很多订单,所以我的订单表中自然有一个外键user_id。

Rails 中的最佳实践是什么(在速度、风格和参照完整性方面)以确保如果删除用户,所有相关订单也将被删除?我正在考虑以下选项:

案例 1. 在用户模型中使用 :dependent => :destroy

案例2.在postgres中定义表顺序并编写

user_id integer REFERENCES users(id) ON DELETE CASCADE

我应该使用案例 1 有什么理由吗?似乎案例 2 正在做我想让它做的一切?执行速度有区别吗?

最佳答案

这实际上取决于您想要的行为。在情况 1 中,将对每个关联的订单调用 destroy,因此 ActiveRecord callbacks 也会被调用。 .在情况 2 中,这些回调不会被触发,但它会更快并保证引用完整性。

在应用程序的初始阶段,我建议使用 :dependent => :destroy,因为它可以让您以独立于数据库的方式进行开发。开始扩展后,出于性能/完整性原因,您应该开始在数据库中进行扩展。

关于ruby-on-rails - rails : delete cascade vs dependent destroy,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12556614/

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