Mongoid 4通过ID查找嵌入文档

时间:2014-04-22 20:54:32

标签: ruby-on-rails-4 mongoid4

我有一个项目是我第一次严重潜入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在后端获取它。这就是我需要它的原因。

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

2 个答案:

答案 0 :(得分:0)

尝试简单:

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

答案 1 :(得分:0)

我已经解决了这个问题,虽然这对将来的人们没什么帮助。要求已经改变,现在我使用人类可读的字符串作为ID来协助友好的URL和其他一些东西。

因此,我对ObjectIds没有任何问题。 Cortex的解决方案应该(从我读过的)处理ObjectIds,但我现在无法验证它。