Rails 应用程序中的数据和业务逻辑历史记录

时间:2021-03-28 22:38:03

标签: ruby-on-rails database postgresql architecture ruby-on-rails-6

我正在 Postgresql 上开发一个现有的 Rails 应用程序,用于计算承包商的佣金和各种数据。

员工有很多承包商。承包商和员工都有在业务逻辑中用于计算佣金的字段。

我的客户希望拥有他们所有数据的年度快照,以便他们可以自由地更改业务逻辑、添加和删除员工等,而不会丢失他们过去(计算)的数据。

我最初的想法是使用 Postgres 模式。我每年都会有一个 cron 任务,将数据库按原样复制,并将每个表和记录复制到该年的模式中。这相当于在未来拥有旧版本的数据库。但是,我担心将来添加列后应用程序逻辑会中断。

例如,一个架构在一年后创建,一列被添加到 contractors 表中,用于佣金计算。我该如何保存不依赖于新列的旧版佣金公式?

我能想到的唯一解决方案是简单地保留旧公式并根据模式有条件地使用它们。我觉得这很脏,随着业务逻辑的变化会导致很多垃圾。

您建议我如何解决这个问题?预先感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

我认为您应该将计算的佣金存储在您的数据库中以防止重新计算。接受的计算值是事实,只需坚持该值即可。

如果您需要稍后审核计算字段,我不确定旧的计算逻辑是否应该非常方便地在应用程序层检索。您可能需要为此追溯您的代码 svn。或者数据仓库应该有计算逻辑。应用程序只能提供所需的计算参数,让审计员处理。

如果用例是很容易突然回滚到特定的历史业务规则,那么我不建议满足这样的要求。