2017-08-14 77 views
0

我在名为Quote的模型上有一个名为data的字段。列类型是一个JSON对象,它存储可能引用其他字段的各种字段。我需要保持这些相关字段以及其他模型同步。Pubils/Sub for Rails中的Postgres JSON字段

例如,随时income.residential_income.totalincome.commercial_income.total被更新时,income.total需要被更新。后端应该更新所有相关的字段吗?前端是否有意识地跟踪这些更改并向后端提供数据?我可以使用pub/sub来观看同一模型中的几个字段以更新这些关系吗?我不清楚什么是实现此功能的最简单方法。

income: { 
    total: 250 
    residential_income: { 
    total: 100 
    }, 

    commercial_income: { 
    total: 150 
    } 
} 
+0

如何更新收入价值? –

+0

这些值正在我们的前端通过表单进行更新。前端计算这些更改并为后端提供计算总数是否最有意义? – yesyoukenn

+0

所以'income.total'只是一个缓存值。您应该考虑是否可以_not_存储该值,并根据需要进行计算。 –

回答

1

当你说PUB/SUB我假设你说的是LISTEN/NOTIFY功能的postgres? 我不会在你的场景中使用它,当侦听过程崩溃,尚未启动,重新启动,无法访问时,很容易失去同步。

无论 在使用触发器和更新领域的DB

有更新或者收入领域的ALOS计算总的代码。

总不存储摆在首位,需要

由于收入值通过前端改变,你可以很容易地在同一时间更新总时计算。这将确保DB中的值与应用程序同步(缓存很重要)并且尽可能不复杂。

+0

我同意这一点,但为了保持数据一致,我建议在应用程序代码上使用触发器。 –

+0

@WizardofOgz谢谢。我澄清。我的意思是应用程序和数据库之间的同步,而不是JSON字段本身。 –