Как реализовать класс 'категории' в рельсах? - PullRequest
1 голос
/ 03 ноября 2011

Предположим, у меня есть разные товары на моем сайте, поэтому у меня есть классы, такие как Ресторан, Отель, Поездка, Аттракцион.Каждый тип продукта / услуги имеет свой собственный класс, потому что они имеют разные поля и некоторые специфические методы.

Как можно классифицировать эти разные классы?Как, например, классифицировать все поездки и аттракционы как «Деятельность».Нужно ли для этого создавать суперкласс, даже если у них очень мало общей логики?Или, может быть, использовать переменную класса '@@ category'?

Моя главная задача - иметь возможность запрашивать все экземпляры классов, принадлежащих к конкретным категориям.

Ответы [ 2 ]

2 голосов
/ 03 ноября 2011

Предполагается, что эти продукты могут принадлежать только к одной категории, а все продукты принадлежат к одной категории.

Создайте новую модель (и таблицу) Категория.

Создайте те категории, которые вам нужны (скажем, «Деятельности» и «Местоположения»).

Создайте новую таблицу product_categories с полями model (string) и category_id (integer).

Создайте начальные данные для категорий продуктов - что-то вроде модели: Trip, category_id: 1

Вуаля, ваши поездки теперь являются активностью.Я предлагаю добавить область для поиска по категории_идентификатора, возможно, в связи с принадлежностью принадлежащего к пользовательскому соединению SQL.

1 голос
/ 03 ноября 2011

Если есть поведенческие изменения или изменения полей, рассмотрим STI (наследование одной таблицы) .

Если есть "большое" количество полей, которые отличаются, я бы рассмотрел простоповесить вещи с основной модели.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...