我该如何实施发票模型?

时间:2013-03-31 17:06:42

标签: ruby-on-rails

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

2 个答案:

答案 0 :(得分:1)

为了规范化数据库表,你需要有两个不同的表。否则它不适合关系数据库的规范化规则,你可以检查信息http://en.wikipedia.org/wiki/Database_normalization

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

答案 1 :(得分:0)

我肯定会实现一个InvoiceItem模型。 Items是程序中的一种对象,可以被操作,因此将它们分成另一个表是一种很好的做法。

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

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

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