1
我在鐵路項目上使用mongoid gem,我很難通過嘗試在內存中修改模型但是從不保存它,所以我不修改數據庫。我試圖修改從內存中加載一個模型的屬性,但它不工作,如波紋管:如何在內存中安全地修改mongoid模型?
mymodel = MyModel.where('some criteria')
mymodel.first.some_attribute = 0
mymodel.first.some_attribute == 0 -> is false
所以我每次我們先做,甚至在每次進入循環時間猜蒙戈重新加載從DB和設置一些屬性沒有任何作用,如果我再次循環,我設置的所有屬性仍然設置爲原始值。有沒有辦法提交交易並強制mymodel保持加載到內存中?我很難使用正確的術語,所以我希望你明白我的意思。
Thx,那是我的觀察但我認爲做ms = M.where('某些標準'); ms.each {...}將迭代查詢的實例,但它尚未解析,並且每次都執行查詢。 –
'ms'只是在這種情況下的一個查詢,'ms.each {...}'不會自動解析並隱藏查詢,它只是執行查詢並像遊標一樣遍歷結果;例如,如果您在迭代時修改(例如,'ms.each {| m | m.attr = 6; m.save}'),我就會看到這個結果有趣的結果,除非您在整個迭代過程中有明確的順序。 –