Я только недавно унаследовал приложение на Rails и обсуждаю архитектурное решение в будущем.Вот немного предыстории ... Обратная связь приветствуется.
В настоящее время существует 16 различных типов объявлений, все с набором одинаковых атрибутов, несколько с одним или двумя дополнительными атрибутами и пара с тремя иличетыре.
В настоящее время каждый тип объявления имеет отдельную модель и таблицу с соответствующими столбцами, а также отдельный контроллер и представления в CMS, также используемые для базового CRUD.CMS использует в своих интересах атрибут наследованных_ресурсов, что ограничивает дублирование.
Я выписал набор атрибутов - их около 20, которые охватывают все типы объявлений.Определенные типы объявлений имеют ассоциации - несколько ассоциаций has_many, в которых внешний ключ хранится в связанной таблице, а несколько принадлежат__.
У объявлений нет реального поведения.Определенные типы объявлений просто отображаются на разных страницах, поэтому, пока я могу определить, есть ли реклама определенного типа, мы золотые.
Я спорю о переходе на одну модель, таблицу иконтроллера, но хочу получить как можно больше информации от сообщества stackoverflow о том, подходит ли это 1) хорошее решение проблемы 2) любые проблемы с производительностью 3) любые потенциальные узкие места в программировании, которых у меня нет.Вот мои мысли на данный момент ...
Предполагается, что маршрут /: location /: ad_type / new (например, / homepage / ad_type_1 / new):
ad_controller создаст @ad с ad_type, установленным в params [: location] + params [: ad_type], и отображает новое представление, которое будет содержать серию условий для отображения соответствующих партиалов для данного ad_type.При отправке запускается действие создания, создающее объявление с ожидаемыми атрибутами, определенными для типа объявления, одним из которых в этом случае будет ad_type = homepage_ad_type_1.
Я не особо задумывался о получении данных, нопредполагая, что столбец ad_type установлен правильно, я смогу создать область действия «of_type», которая извлекает записи на основе столбца ad_type.Не уверен, что я что-то там упустил.
Проверки будут варьироваться в зависимости от значения ad_type.
Я не совсем уверен, сколько объявлений будет существовать в любой момент времени, но я чувствую,это может быть решено позже.Либо, переместив некоторые устаревшие строки в таблицу ad_archives, либо аналогично.
Ваши мысли ценятся.Спасибо.