2011-02-16 127 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),那裏的人總是可以知道發生了什麼。