Rails 4 - 为我列出的产品创建账单

Rails 4 - Creating bills about products I have listed

我有一个关于我店里所有产品的模型Product这基本上只是name:stringprice:decimal

在另一边,我有一个模型 Bill,其中我列出了 Products 的销售量。我想在 Bills 和 Products 之间建立关系 M:N,这样 Bill 可以销售很多产品,而 Product 可以在不同的 Bills 中销售。

但会出现以下问题: 如果我在几年后更改产品价格怎么办?如果我尝试检查过去发行的账单,我会得到错误的金额。

处理这个问题的最佳方法是什么?

你可以给这个添加第三个关系,不要像我在评论中发布的那样让它变得复杂。

例如,我们称它为Transaction

  • 产品has_many 交易
  • 账单has_many交易
  • 交易has_one账单、产品

交易会像 product_id:integer, bill_id:integer, product_amount:integer, product_price:decimal, transaction_amount:decimal

  • product_amount - 这将是通过此交易购买的 X 单位产品,假设我买了 10 个苹果,所以 Transaction 对象 product_amount 等于 10
  • product_price - 产品当时的当前价格,同例苹果产品购买时的价格
  • transaction_amount - 交易总额,比方说 10xApple

这样您就可以跟踪在 Y 时间购买了多少产品,当时的产品价格是多少以及总金额是多少。

现在,当您想知道在 Y 月销售了多少单位的 X 产品时,您会 Transaction.where("product_id = ? and created_at between Y and Y", x.id).sum(:product_amount)