我有一個名爲「Scores」的表,它有4列「first」,「second」,「third」和「average」保持用戶的得分記錄。如何將一條記錄中的多列的計算結果更新到帶有rails的postgresql數據庫中
當用戶最初創建記錄時,他可以將「平均」列留空。然後他可以稍後編輯所有3個分數。
編輯之後,用戶可以在他的節目頁面中看到計算的平均(或求和,或任何計算結果),因爲我有
高清顯示 @ave =(@ score.first + @score .second + @ score.third)/ 3 end
但是,@ave不在數據庫中,我如何將@ave更新到我的數據庫的「平均」列中?
理想情況下,如果計算髮生在更新到數據庫之前,最好是所有4個值都可以一起更新到數據庫中。它可能與Active Record Callbacks有關,但我不知道該怎麼做。
第二種方法,我想我需要在數據庫中使用「觸發器」,以便在其他3列更新後立即計算和更新「平均」列。如果這是你怎麼做的,請讓我知道和比較解決方案編號1的優勢。
最後的方法,因爲用戶已經知道他的顯示頁面的平均值,我不必更新立即將平均值計算爲「平均值」列。我想我可以將此留給late_job或後臺工作。如果你是這樣做的,請讓我知道如何。
預先感謝您!(紅寶石2.3,導軌5.0.1,PostgreSQL的9.5
我用before_save代替。感謝您的幫助! – Denny