Задача написать модерацию для моделей. Модели должны получить
status_id
mod_at
reason_id
comment
Есть 2 варианта:
1. Добавляем
status_id
mod_at
во все модели, которые нужно модерировать.
Все остальные данные по модерации в полиморфной таблице moderatable.
2. Создаем полиморфную таблицу moderatable и там все поля
moderatable_id
moderatable_type
status_id
mod_at
reason_id
comment
Для каждой модерируемой модели создавать обязательную запись в этой таблице.
Плюсы 1:
a) не нужно для каждой модерируемой модели создавать обязательные записи moderatable т.к. для approved моделей (которых большинство) не нужны причины и комментарии.
б) не нужно лезть в полиморфную таблицу, чтобы узнать статус модерации т.к. статус хранится в модели.
Минусы 1:
В каждую модерируемую модель придется добавлять поля
status_id
mod_at
Т.е. получается дублирование данных.
Плюсы 2:
Не нужно дублировать данные и добавлять в каждую модель поля
status_id
mod_at
Минусы 2:
Большое количество записей в moderatable т.к. она будет 100% дублировать все записи модерируемых моделей.
Нужно делать дополнительный запрос, чтобы узнать статус модерации.
Ничего не понял, но очень интересно... В случае чего, какой вариант позволит вам поднять логи и откатить изменения? Какой вариант более... "историчен"? Менять что-то напрямую, ИМХО, плохая идея.