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