Что такое Rails Way для управления серией отношений has_many из одной модели - PullRequest
0 голосов
/ 05 октября 2010

Я использую 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 Ответ

1 голос
/ 07 октября 2010

Если свойства имеют очень похожий набор методов, вариантов использования и поведений, имеет смысл объединить их в единую модель свойств.

Если каждый из них работает по-разному, требуя разных методов и поведения, то то, что вы сейчас описываете, будет правильным.

Если ситуация где-то между ними, вы можете использовать Наследование одной таблицы , чтобы избежать дублирования кода и сохранить простоту проектирования.

...