【问题标题】:Mongoid 4 finding embedded documents by IDMongoid 4 按 ID 查找嵌入文档
【发布时间】:2014-04-22 20:54:31
【问题描述】:

我有一个项目是我第一次认真研究 Mongoid。

我看到了使用以下命令的提示:

Parent.where('childrens._id' => Moped::BSON::ObjectId(params[:id])).first

但这不起作用。错误信息是:

NameError: uninitialized constant Moped::BSON

我发现 BSON 不再包括在内,所以我将它添加到我的 Gemfile 以及 Moped 中。然后,我做了另一个我发现的修复(将 Moped::BSON=BSON 放在 application.rb 中)。

这个还是不行,但是错误改成:

NoMethodError: undefined method `ObjectId' for BSON:Module

所以我假设这个方法已经被弃用了。有没有其他提示?

为了清楚起见,我发现自己处于想要使用 jquery-sortable 对嵌入文档进行排序的情况。这需要我在数据库中更新它们,但是其中的序列化不包括哈希中的父文档。所以我想我会尝试使用嵌入式文档中的 ID 在后端获取它。这就是我需要它的原因。

再次感谢您提供的任何帮助。

【问题讨论】:

    标签: ruby-on-rails-4 mongoid4


    【解决方案1】:

    简单尝试:

    Parent.where('childrens._id' => params[:id]).first
    

    【讨论】:

    • 自从我发布这个问题以来,我做了更多的挖掘工作,看起来你的建议应该有效。也就是说,要求已经改变,现在所有模型的 ID 都不是 ObjectId,而是人类可读的字符串。不过,谢谢你的回答,我会更新我的问题。
    【解决方案2】:

    我已经解决了这个问题,尽管这对未来的人们没有太大帮助。要求已经改变,现在我使用人类可读的字符串作为 ID 来辅助友好的 URL 和其他一些东西。

    因此,我对 ObjectIds 没有任何问题。 Cortex 的解决方案应该(根据我的阅读)可以处理 ObjectId,但我现在无法验证。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-19
      • 1970-01-01
      • 2011-04-26
      • 1970-01-01
      相关资源
      最近更新 更多