0

我正在制作一个发票应用程序。最明显的模型是 Invoice,它有 date、client_id、user_id 等。然而,Invoice 可以有一个或多个行项目,它们加起来就是总发票金额。每个行项目都有描述、费率和数量。创建另一个模型“LineItem”是否有意义,或者是否有更简单的方法将所有内容保留在 Invoice 模型中?谢谢!

4

2 回答 2

1

为了规范您的数据库表,您需要有两个不同的表,如您所说。否则它将不符合关系数据库的规范化规则,您可以查看信息http://en.wikipedia.org/wiki/Database_normalization .

因此,使用两个表:Invoice 和 LineItem。并且您需要在 LineItem 表中放置一个外键,引用 Invoice 表 Id。

于 2013-03-31T17:10:55.940 回答
0

我肯定会实现一个 InvoiceItem 模型。Items 是程序中的一种对象,可以进行操作,因此最好将它们分开到另一个表中。

class Invoice << ActiveRecord::Base
  has_many :invoice_items
end

class InvoiceItem << ActiveRecord::Base
  belongs_to :invoice
end

然后确保 InvoiceItem 有一个“invoice_id”字段

于 2013-03-31T17:14:36.473 回答