【问题标题】:Mongoid doesn't delete Mongo objectsMongoid 不会删除 Mongo 对象
【发布时间】:2011-07-28 16:01:03
【问题描述】:

我正在使用 Sinatra 和 Mongoid 来访问 MongoDB。大部分都运行良好,除了当我尝试删除一个对象时,该对象被删除但似乎保留在数据库中。

 u = User.find(user_id)
 u.delete

这似乎有效并且不会产生错误,但是当我使用 Mongo 控制台检查数据库以确认这一点时,该对象仍然存在。用户对象不在上限集合中。

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

此更改确实会产生错误,这意味着对象已成功删除。尽管如此,在 Mongo 控制台中,对 users 集合的 find() 调用仍会显示该对象。

【问题讨论】:

  • 您的模型中有include Mongoid:Paranoia 吗?默认行为不应使用 deleted_at。见mongoid.org/docs/extras.html
  • 谢谢特德。你是正确的偏执狂在模型中,我需要使用“u.delete!”真正删除对象。

标签: ruby mongodb sinatra mongoid


【解决方案1】:

虽然 MongoDB 对象没有从数据库中删除,但会向该对象添加一个“deleted_at”参数,以指示它何时被“删除”。之后,将不会在搜索中找到该对象。

【讨论】:

  • 谢谢 Lior。您是正确的,“deleted_at”已添加到对象中。我的开发人员在用户模型中包含偏执狂以防止删除。我了解到要真正删除对象,我必须使用“u.delete!”而不是我一直使用的标准“user.delete”。
猜你喜欢
  • 1970-01-01
  • 2022-01-23
  • 1970-01-01
  • 1970-01-01
  • 2017-06-26
  • 2012-08-18
  • 1970-01-01
  • 1970-01-01
  • 2019-10-06
相关资源
最近更新 更多