Решал подобную задачу немного другим образом.
- Есть модель объекта, например Banner.
- Есть дополнительная модель, которая содержит список изменений, которые хотят применить к объекту, например BannerChanges.
1. До модерации отображается объект, например banner01.
2. При внесении изменений, которые требуют модерации, создаётся объект со списком изменений, например banner_changes_01 (список изменений представляет из себя json вида "поле": "новое значение").
3. До принятия решения по модерации система работает с изначальным объектом banner01.
4. В случае успешной модерации к banner01 применяется набор изменений banner_changes_01.
Вокруг это всего можно накрутить историю применения изменений, автора изменений, принявшего решения модератора и возможность отмены изменений.