我有一个在MongoDB上使用Mongoid的应用程序,并且更新失败了。
代码如下所示:
# 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日志,并根据mongo尝试做的事情构建了这个查询:
db.users.update({ "_id": "4d5561276ce886c496000001" }, { $set: { "first_name": "Erinamodobo" } }, false);
现在这不会导致任何异常,但是当我抓住应该使用此查询更新的记录时:
db.users.find({"email":"escharling@somecompany.com"})
我看到“first_name”属性尚未更新。
知道为什么会这样吗?听起来很蠢。
谢谢!
答案 0 :(得分:1)
你需要找出什么
user.update_attributes!(@attributes)
实际上正在做。这可能是Mongoid的一个问题。配置Mongoid时,可以设置记录器。在那里你应该能够看到驱动程序写入MongoDB的内容,这应该有助于回答你的问题。接下来最好的做法是将您的代码发布到Mongoid邮件列表(http://groups.google.com/group/mongoid),其中与Mongoid一起工作的人可能会知道正在发生的事情。
答案 1 :(得分:1)
将Mongoid更新到最新的rc.7解决了这个问题
答案 2 :(得分:0)
在您的操作中启用“安全模式”。