在我们的Rails应用程序环境(ruby 1.8.7 / rails 2.3.12)中,我可以运行以下代码:
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的测试套件中重现这一点。
关于这种效果如何可行或如何摆脱它的任何信息都会很棒。谢谢!
答案 0 :(得分:2)
这是一个错误:在https://github.com/jnunemaker/mongomapper/issues/new处提交 此错误已在较新版本的MongoMapper中修复
这是一种解决方法:
key :test_arr, Array, :default => lambda { [] }
这是因为Ruby中的数组是可变的,所以每次使用<<
添加默认数组对象。你的文档的object_id将是不同的,但数组的object_id将是相同的。