gpt4 book ai didi

ruby-on-rails - 当我需要模型关系时,我如何防止错误?

转载 作者:太空宇宙 更新时间:2023-11-03 17:06:15 25 4
gpt4 key购买 nike

我有一个应用程序有很多数据库关系,这些数据库关系相互依赖才能成功运行该应用程序。应用程序中的铰链是一个称为 Schedule 的模型,但该计划将拉取 Blocks、一个 Employee、一个 JobTitle 和一个 Assignment(除此之外,每个 Block 也会从数据库中拉取一个分配)到全天组装员工时间表。

当我构建应用程序时,我非常重视验证,以确保在将所有内容保存到数据库之前所有部分都已到位。到目前为止,效果非常好,该应用程序已经上线并运行了将近 6 个月,每月处理大约 150,000 个请求,没有出现任何问题或错误。直到上周。

上周,当有人在更改时间表时,数据库似乎出错了,一​​个时间表被保存到数据库中,但它的 Assignment 丢失了。因为关联在每个 View 中都被调用,所以每当从数据库中调用此计划时,应用程序都会抛出一个 NoMethod 错误以调用 nil。

按照我所说的方式设计应用程序时,您是否防止数据库/验证方面可能出现的故障?如果是这样,您如何以编程方式防御它?在将其发送到 View 之前,您是否检查每个关系以确保它不是零?

我知道这个问题泛泛而谈,如果我能更具体地表达我的意思,请在评论中告诉我。

最佳答案

我建议添加 database-enforced foreign key constraintswrapping important groups of operations into transactions .

如果在 Schedule 和 Assignment 之间存在外键,数据库强制执行的外键约束会阻止错误的插入。此外,如果将特定操作包装在事务中,则可以确保整个插入/更新/删除流发生或失败,恢复到干净状态。

关于ruby-on-rails - 当我需要模型关系时,我如何防止错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/803820/

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