2011-02-16 153 views
0

我有一个应用程序在MongoDB的顶部使用Mongoid和更新失败默默。MongoDB更新查询失败默默

的代码看起来是这样的:

# Are we getting a new attribute? Yes we are! 
p "attr first name = #{@attributes['first_name']}" 

if user.update_attributes!(@attributes) 
    u = User.find(params[:id]).to_json 
end 

无异常在此代码抛出。所以,我看着我的MongoDB的日志,并构建了基于什么蒙戈正在努力做到这一点查询:

db.users.update({ "_id": "4d5561276ce886c496000001" }, { $set: { "first_name": "Erinamodobo" } }, false); 

现在,这不会导致任何异常,但是当我们把这个本来与此查询更新的记录:

db.users.find({"email":"[email protected]"}) 

我看到“first_name”属性尚未更新。

任何想法为什么会发生这种情况?听起来很愚蠢。

谢谢!

回答

1

将Mongoid更新到最新的rc.7中解决了这个问题

0

在您的操作上启用“安全模式”。

+0

我不知道谁在地球上给了这个投票下来,但我投了票。 – 2011-02-16 19:20:11

1

你需要找出

user.update_attributes!(@attributes) 

实际上做的事情。这可能是Mongoid的一个问题。当你配置Mongoid时,你可以设置一个记录器。在那里您应该能够看到驱动程序写入MongoDB的内容,这应该有助于回答您的问题。接下来最好的事情是将你的代码发布到Mongoid邮件列表(http://groups.google.com/group/mongoid),那里的人总是可以知道发生了什么。