Это не тот ответ, который вам нужен, но вам понадобится много моделей.
Атрибуты, связанные с квартирой (квадратные метры, коммунальные услуги, этаж здания), полностью отличаются отатрибуты, связанные с автомобилем (марка, модель, пробег, состояние), которые полностью отличаются от книги (название, автор, издатель, издание и т. д.).Эти элементы настолько принципиально отличаются, что невозможно управлять ими в одной модели.
При этом может существовать базовая коллекция атрибутов, которые могут быть связаны с продуктом, который продается (продавец, цена, сроки).У вас есть два основных пути вперед:
Вы можете решить использовать наследование одной таблицы.В этом случае вы создадите абстрактный класс, который определяет атрибуты, которые являются общими для всех продуктов, которые вы продаете (продавец, цена, товар).Затем вы добавили бы столбец «тип» в вашу базу данных, который будет использоваться для определения типа продукта (сопоставленного с вашими категориями), и определите все возможные атрибуты в одной таблице.
Вы можете выбрать основной набор атрибутов и использовать их как часть любого другого объекта, который считается продуктом.У вас будет несколько таблиц, в которых будет полная запись для любого данного объекта.
Не зная много деталей о вашем приложении, трудно дать конкретную рекомендацию о том, какой подходправильно для вас.На данный момент лучше всего тратить много времени на Google с «рельсами наследования одной таблицы» и «рельсами наследования нескольких таблиц» и выяснить, какой из них вам подходит (хотя моя интуиция говорит о нескольких таблицах).