我需要在Rails中保存模型時計算值。所以,我呼籲calculate_averages
作爲一個Survey
類的回調:如何保存模型而無需在Rails中運行回調
before_save :calculate_averages
但是,偶爾(和最初我有10K的記錄需要此操作),我需要手動更新每個記錄所有的平均值。沒問題,我有這樣的代碼如下:
Survey.all.each do |survey|
survey.some_average = (survey.some_value + survey.some_other_value)/2.to_f
#and some more averages...
survey.save!
end
即使運行此代碼之前,我擔心的calculate_averages
將會被調用並複製這甚至可能導致一些問題的,我做的方式的東西。好吧,那麼我認爲,好吧,我什麼也不做,讓calculate_averages
得到調用並做它的事情。問題在於,首先,是否有辦法強制回調被調用,即使您沒有對記錄進行任何更改?
其次,平均值的計算方法是遠效率更高,根本不會讓回調被調用,並一次完成所有事情的平均值。這可能不會讓回調被調用?
如果你有10k條記錄要更新,那麼爲什麼不完全繞過AR,只做一個簡單的SQL UPDATE?特別是如果你想跳過回調。 –
@ muistooshort - 我簡化了我需要做的計算,但它們很複雜,也取決於其他記錄。我需要Ruby。 –