提取Ruby哈希中的`Moped::BSON::Document`属性



在Mongoid 3.0.21中,如何将模型的所有属性作为一个普通的Ruby Hash

调用#attributes#raw_attributes返回Moped::BSON::Document。虽然它实际上扩展了Hash,但

几个散列方法并没有按预期工作。特别是#except返回未修改的self,而不是剥离给定密钥的散列。

更新Moped::BSON::Document正确继承了Hash的行为。我试图用符号而不是字符串来命名属性,这就是#except不起作用的原因。很快:做except('pictures'),而不是except(:pictures)

Hash[e.attributes]

其中e是您的模型实例

我很抱歉撞到了这么旧的东西,但我想把这件事留给我自己和所有未来遇到同样问题的人。我使用的是Mongoid ORM for Rails,它在内部使用Moped与MongoDB进行交互。

这个gem现在为我节省了数小时的手动转换为HashHashWithIndifferentAccess的时间:https://github.com/mindscratch/mongoid-indifferent-access.

从本质上讲,它似乎有某种预返回挂钩,可以自动将来自MongoDB的所有文档转换为类型HashWithIndifferentAccess

不想在这上面找点。我只是想把这个留在这里,因为这是谷歌在这个问题上的最高结果,它让我免于发疯。

最新更新