Я хочу представить свое дело и узнать, следует ли мне использовать решение STI.
Я создаю веб-сайт доски объявлений, и пока у меня есть несколько моделей: пользователь, тема, сообщение..
чтобы было ясно: сообщение похоже на комментарий к теме. Тема имеет название и содержание. Пост имеет только содержание.
Теперь у Пользователя есть возможность Нравится/Не нравится Сообщению или Теме. Я думал о трех вариантах:
- Тема и сообщение не связаны (у каждой модели есть «количество_лайков», «количество_дизлайков»)
- Тема наследует сообщение.
- Тема и сообщение наследуются от базовой модели, которую можно назвать, например, LikeableObj.
Какой из этих трех вариантов больше всего подходит для моих нужд?
Есть ли четвертый вариант, о котором я не подумал?
Что делать, если в будущем я хотел бы иметь третью Модель, которая может быть Понравилось?