У меня есть приложение для рельсов, которое отслеживает владельцев карт-участников и должно сообщать о статусе владельца карты. Статус определяется - по бизнес-правилу - как «добросовестно», «просрочено» или «отменен», в зависимости от того, был ли оплачен последний счет держателя карты.Рекомендации по обработке полей статуса объекта в приложениях rails: хранить или вычислять?
Счета-фактуры отправляются за 30 дней, так что клиент, который только что выставил счет, по-прежнему находится в хорошем состоянии, тот, у кого 20 дней после истечения срока платежа, имеет задолженность и член, который не оплатил свой счет больше чем через 30 дней после его погашения.
Я ищу совет относительно того, будет ли лучше хранить текущий статус владельца карты как поле на уровне клиента (и иметь дело с потенциальными аномалиями обновления, вызванными потенциальными обновлениями записей счетов, не обновляя запись соответствующего владельца карты), или имеет смысл просто рассчитать текущий статус держателя карты на основе данных в базе данных каждый раз, когда запрашивается статус (что может привести к большой нагрузке на базу данных и замедлению работы приложения).
Рекомендации? Или другие идеи, о которых я не думал?
Одно из важных ограничений: в то время как маловероятно, что кто-либо изменит базу данных напрямую, всегда есть такая возможность, поэтому мне нужно попытаться установить некоторые меры предосторожности, чтобы предотвратить невозможность синхронизации различных записей базы данных друг с другом.