2017-08-14 58 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字段本身。 –

相關問題