【发布时间】:2016-04-07 09:12:12
【问题描述】:
我有一个模型Product,关于我在我的商店提供的所有产品这基本上只是name:string 和price:decimal。
另一方面,我有一个模型Bill,我列出了Products 的销售量。我想在 Bills 和 Products 之间建立 M:N 关系,这样Bill 可以销售许多产品,Product 可以在不同的 Bills 中销售。
但会出现以下问题:如果我在几年后更改产品价格怎么办?如果我尝试查看过去签发的账单,我会得到错误的金额。
解决这个问题的最佳方法是什么?
【问题讨论】:
-
为什么不把产品的当前价格也保存在账单上呢?例如,在 JSON 中,您可以在账单上有多个产品,其当前价格与几年后产品的价格无关。或者添加第三个关系,例如您拥有产品、购买价格和账单 ID 的交易。那么 Bill 会有多个 Transactions 并且 Product 的价格是否改变都没有关系。
-
与第三个关系,没有。您还可以将产品金额添加到交易中。然后您只需查询
Transaction.where("product_id = yourid and created_at between X and Y").sum(:productamount)等。应该很容易。我认为如果您打算更改产品并希望记录账单上的更改+有其他数据(例如金额和价格),则需要使用第三关系,否则会太混乱和复杂
标签: ruby-on-rails database-relations