2011-08-29 42 views
0

在我們的Rails應用程序環境(紅寶石1.8.7/2.3.12軌),我可以運行下面的代碼:MongoMapper新記錄包含舊記錄的數據

class MongoTester 
    include MongoMapper::Document 
    key :test_arr, Array, :default => [] 
end 

mt = MongoTester.new 
mt.test_arr << 24 

mt2 = MongoTester.new 

mt2.inspect的輸出是:

#<MongoTester test_arr: [24], _id: BSON::ObjectId('4e5c089f3beaacad00000002')> 

我不知道這是如何可能的。兩個記錄的object_id和_id是不同的。兩個人都沒有得救。我們的應用程序中沒有修改MongoMapper(mongomapper 0.8.6)。然而,一個全新的記錄包含以前創建的不同記錄的數據。

我無法在MongoMapper的測試套件中重現這一點。

任何有關這種效果如何可能的信息或如何我可以擺脫它將是很棒的。謝謝!

回答

2

這是一個錯誤:在 https://github.com/jnunemaker/mongomapper/issues/new 文件,它此錯誤是固定在MongoMapper

這裏的新版本是一個解決辦法:

key :test_arr, Array, :default => lambda { [] }

這是因爲在Ruby中數組是可變的,所以每次使用<<時都會添加默認數組對象。你的文檔的object_id是不同的,但是數組的object_id是相同的。

相關問題