gpt4 book ai didi

ruby-on-rails - 从关联中序列化不可变数据是个好主意吗?

转载 作者:行者123 更新时间:2023-12-02 17:59:35 25 4
gpt4 key购买 nike

假设我们有一系列产品,每个产品都有自己的特点,例如价格。

我们想要开具包含上述产品的发票。通过 :has_many 使用从 InvoiceProduct 的直接关联是不行的,因为产品可能会发生变化,而发票必须是不可变的,从而导致发票价格、概念等的变更。

我首先想到有一个像 InvoiceProduct 这样的中间模型,它将与 Invoice 关联并从 Product 创建。每个 InvoiceProduct 对于其父发票来说都是唯一的并且是不可变的。随着更多发票的开具,此选项会显着增加数据库大小,因此我认为这不是一个好的选择。

我现在正在考虑向发票模型添加一个序列化字段,其中包含与其关联的所有产品信息,即发票包含的项目集合的哈希值。这样,即使产品将来被修改,我们也可以以不可变的方式拥有它们。

不过,我不确定这种方法可能存在的中长期负面影响。想听听您的想法。

此外,如果有一些我可能忽略的更明显的方法,我也很想听听。

干杯

最佳答案

根据我的经验,序列化字段方法与上述 InvoiceProducts 方法相比的主要缺点是在如何使用发票数据方面降低了灵活性。

在我们的例子中,我们的数据库中有 Orders 和 OrderItems 表,并使用这些数据生成销售分析报告以及客户发票。

使用这种方法查询 OrderItem 数据以生成我们需要的销售报告比将相同数据作为序列化数据存储在数据库中更快、更容易。

关于ruby-on-rails - 从关联中序列化不可变数据是个好主意吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74754892/

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