2011-07-28 49 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