@mrruslan

Как правильно организовать архитектуру?

Есть приложение на Rails. Создал отдельные модели для анонсов, новостей и объявлений. Вопрос в том стоит ли делать три отдельные модели или можно только одну, потому что по сути будут только поля имя и контент? но в дальнейшем возможно придется добавить другие поля, например цена для объявлений и дата или место проведения для анонсов. Как сделать более гибко но и чтобы было по минимуму дублирований?

Также эти модели должны быть привязаны к категориям. Думаю назвать родительские категории Анонсы, Новости, Объявления. И к их потомкам привязать объекты этих трех моделей соответственно. Подкатегории реализую с помощью https://github.com/collectiveidea/awesome_nested_set/
  • Вопрос задан
  • 2227 просмотров
Пригласить эксперта
Ответы на вопрос 2
DelphiST
@DelphiST
RoR Fullstack Developer
Можно оставить каждую модель отдельным классом и использовать concerns.

# app/models/news.rb
class News
  include Entry
end

# app/models/announce.rb
class Announce
  include Entry
end

# app/models/concerns/entry.rb
module Entry
  extend ActiveSupport::Concern
  included do
    belongs_to :category
  end
end
Ответ написан
Комментировать
viktorvsk
@viktorvsk
Если новости, анонсы и объявления у вас - сущности схожие, то создайте модель Контента и используйте STI
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы