В моем приложении Rails мне нужно хранить заказы клиентов, чтобы владелец магазина мог ссылаться на заказы позже.
Я обеспокоен тем, что после того, как заказ будет завершен, через некоторое время сотрудникам магазина может потребоваться изменить цену, детали или продукт в будущем.
Если предположить, что Продукт связан с Заказом только с помощью product_id
, это поставит под угрозу целостность окончательного заказа.
Каковы общие подходы к управлению этим?
Вариант, который я могу придумать, - это негласно не разрешать обновления продуктов. Если персонал выполняет «обновление», за кулисами старая запись просто помечается как «старая», и на ее месте создается новый Продукт.
Другим вариантом может быть сохранение хэша в модели Order для продукта в том виде, в каком он появился на дату совершения транзакции.
Каковы плюсы и минусы этого? Существуют ли другие возможности, которые я должен рассмотреть в качестве признанного шаблона дизайна, чтобы справиться с этим?