Полиморфные модели в Ruby on Rails?

Для проекта, над которым я работаю, в магазине есть два типа товаров - реальный товар и группа товаров.

Для этого обсуждения назовем их «1 футболка» и «коробка футболок». Для одной футболки мне нужно сохранить обычные атрибуты - цену, артикул, размер, цвет, описание и т. д. Для коробки футболок мне нужно иметь цену, артикул, описание и список футболок. рубашки, которые входят в комплект.

Так что прямо сейчас я представляю это с моделями Shirt и ShirtCollection. Я вижу, что это вызовет трудности в будущем, когда мне понадобится составлять отчеты и управлять заказами, а также проверять уникальность артикулов.

Итак, как лучше всего это представить?

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
0
2 218
2

Ответы 2

У меня бы были следующие модели

Футболка
TshirtBox has_many TshirtItems
TshirtBoxItems (это в основном таблица соединений с идентификаторами tshirt_box_id и tshirt_id) принадлежит_to TshirtBox

TshirtBoxItems - это способ связать футболку с коробкой и, возможно, другими вещами в будущем.

У вас может быть таблица Tshirt и затем ссылаться на нее с помощью ассоциации has_many: through.

Футболка - id, артикул, цена, размер, цвет, описание, is_box

TshirtBox - parent_tshirt (идентификатор, который ссылается на футболку), child_tshirt (идентификатор, который ссылается на футболку)

Ознакомьтесь с этой ссылкой, чтобы узнать больше о самореферентном has_many: через http://www.aldenta.com/2006/11/10/has_many-through-self-referential-example/

Другие вопросы по теме