Выбор категории рельсов - PullRequest
0 голосов
/ 16 марта 2012

Надеюсь, у нас есть хороший разработчик рельсов, который определенно может дать правильный ответ!В течение 2 дней я не получил никакого действительного ответа на свой вопрос

Я объясню в очень простом примере

Клиент предлагает продукт.Когда он подталкивает к созданию, это дает форму.Выберите категорию.Как только он выберет другую форму, появится всплывающее окно.

В зависимости от категории, форма должна иметь совершенно разные атрибуты. У меня не может быть Product.new для каждой категории.Причина в том, что они имеют разные атрибуты (логически верно).Поэтому я должен создать 100 моделей для 100 категорий

Категории: автомобили, квартиры, купоны, книги и многое другое

Если вы можете привести только один пример, я буду благодарени позвоню вам эксперт

Спасибо

Ответы [ 2 ]

1 голос
/ 16 марта 2012

Звучит так, словно ты добираешься туда.Однако у меня не было бы таких моделей, как вы указали в своем вопросе.Я бы сказал, что вам нужна модель продукта и модель категории.Модель категории будет belong_to Product.Модель продукта будет иметь много категорий.Модель Category может использовать гем acts_as_tree, чтобы вы могли иметь категории и подкатегории.Используйте javascript или jQuery (недавно об этом говорили Railscasts), чтобы динамически изменить и опубликовать другое поле с набором вариантов выбора в зависимости от того, что было выбрано.Модели;Продукт, категория, спецификация

Продукт имеет много категорий Продукт имеет много спецификаций через категории

Категория принадлежит продукту Категория имеет много спецификаций

Спецификация принадлежит категории

Таким образом, я могу создать продукт, который имеет несколько категорий.Я могу создать несколько категорий, которые имеют несколько спецификаций.Спецификации связаны с соответствующей категорией.Это позволит вам иметь три модели и ограниченное количество классов.Как только ваш проект завершен, веб-администратор может поддерживать новые категории и спецификации вместо программиста.

0 голосов
/ 16 марта 2012

Это не тот ответ, который вам нужен, но вам понадобится много моделей.

Атрибуты, связанные с квартирой (квадратные метры, коммунальные услуги, этаж здания), полностью отличаются отатрибуты, связанные с автомобилем (марка, модель, пробег, состояние), которые полностью отличаются от книги (название, автор, издатель, издание и т. д.).Эти элементы настолько принципиально отличаются, что невозможно управлять ими в одной модели.

При этом может существовать базовая коллекция атрибутов, которые могут быть связаны с продуктом, который продается (продавец, цена, сроки).У вас есть два основных пути вперед:

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

  2. Вы можете выбрать основной набор атрибутов и использовать их как часть любого другого объекта, который считается продуктом.У вас будет несколько таблиц, в которых будет полная запись для любого данного объекта.

Не зная много деталей о вашем приложении, трудно дать конкретную рекомендацию о том, какой подходправильно для вас.На данный момент лучше всего тратить много времени на Google с «рельсами наследования одной таблицы» и «рельсами наследования нескольких таблиц» и выяснить, какой из них вам подходит (хотя моя интуиция говорит о нескольких таблицах).

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