2011-07-28 67 views
2

我使用Sinatra和Mongoid來訪問MongoDB。除了當我嘗試刪除一個對象時,它的大部分工作都很好,對象被刪除但似乎保留在數據庫中。Mongoid不刪除Mongo對象

u = User.find(user_id) 
u.delete 

這似乎是工作,不會產生一個錯誤,但是當我使用蒙戈控制檯以確認此檢查數據庫,對象仍然存在。用戶對象不在加蓋集合中。

u = User.find(user_id) 
u.delete 
u = User.find(user_id) 

此更改確實會生成錯誤,表示該對象已成功刪除。儘管如此,在Mongo控制檯中,對用戶集合的find()調用仍然顯示該對象。

+1

你在你的模型中包含「包含Mongoid:Paranoia」嗎?默認行爲不應該使用deleted_at。見http://mongoid.org/docs/extras.html –

+0

謝謝特德。你是正確的偏執狂是在模型中,我需要使用「u.delete!」真正地清除對象。 – Scott

回答

1

雖然MongoDB的對象未從數據庫中刪除,一個「deleted_at」參數被添加到其指示當它被「已刪除」的對象。之後該對象將不會在搜索中找到。

+0

謝謝莉奧。您確定「deleted_at」已添加到對象中。我的開發人員在用戶模型中包含偏執狂以防止刪除。我瞭解到要真正刪除對象,我必須使用「u.delete!」而不是我一直使用的標準「user.delete」。 – Scott