【发布时间】:2014-01-31 17:04:57
【问题描述】:
我正在用 Rails 编写一个软件。模型之间的两种关系让我对属性应该驻留在哪里感到头疼。这是一种非典型定价方案,涉及出售给某些客户的产品价格。我们的产品可能会根据客户以不同的价格出售。我们出售的一些较大的公司已经将我们的价格降低了一点。
General Pricing Applicable to most customers
Product A -> $50
Product B -> $60
Product C -> $70
因此,在这种情况下,很容易说产品具有价格属性。但是,该公司已与一些大客户协商价格,可能会出现以下情况。
ACME Corporation
Product A -> $45
Product B -> $56
Product C -> $64
ABC Incorporated
Product A -> $43
Product B -> $55
Product C -> $66
这些价格是协商的,而不是基于原始价格的某个折扣百分比。这引入了一个问题,即每个产品可以根据客户有多个价格。我该如何建模。在大多数用例下,以下工作。
Customer has_many :quotes
Quote belongs_to :customer
Quote has_many :quote_items
QuoteItem belongs_to :quote
Product has_many :quote_items
QuoteItem belongs_to :product
但是由于产品的价格可能因客户而异,所以这是如何建模的?例如,产品与客户之间是否存在多对多关系?
【问题讨论】:
标签: ruby-on-rails database-design model