我有一个项目是我第一次严重潜入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在后端获取它。这就是我需要它的原因。
再次感谢您提供的任何帮助。
答案 0 :(得分:0)
尝试简单:
Parent.where('childrens._id' => params[:id]).first
答案 1 :(得分:0)
我已经解决了这个问题,虽然这对将来的人们没什么帮助。要求已经改变,现在我使用人类可读的字符串作为ID来协助友好的URL和其他一些东西。
因此,我对ObjectIds没有任何问题。 Cortex的解决方案应该(从我读过的)处理ObjectIds,但我现在无法验证它。