什么是Rails方法来管理同一模型的一系列has_many关系

时间:2010-10-05 19:30:50

标签: ruby-on-rails design-patterns ruby-on-rails-3

我正在使用Rails 3。

主要模型是产品

:product has_many :images
:product has_many :related_products (self-referential)
:product has_many :descriptions
:product has_many :specifications
:product has_many :upc_codes
:product has_many :prices

你明白了。我试图确定我是否可以把它变成属性模型,其中属性是价格,规格,描述等。但我遇到的问题是,虽然这些子模型中的一些只有一个属性,其他有很多。例如,图像可能只有路径属性,但描述可以有文本值和语言代码,价格可以有价格和货币组件。

Properties模型提供了很大的灵活性,但如果我处理的是包含多个属性的子属性,它会崩溃。

我需要这两个真正的答案吗?对于那些与产品一对一的属性的属性方式,以及具有多个属性的子模型的每个单独模型(价格,描述等)?

1 个答案:

答案 0 :(得分:1)

如果属性具有非常类似的方法集,用例和行为,则将它们合并到单个Property模型中是有意义的。

如果他们各自以不同的方式工作,需要不同的方法和行为,那么您目前所描述的内容是正确的。

如果情况介于两者之间,您可以使用Single Table Inheritance来避免代码重复,并保持设计简单。