4

Mongoid 3.0.21で、すべてのモデルの属性をプレーンなRubyとして取得するにはどうすればよいHashですか?

#attributesまたはを呼び出すと、#raw_attributesが返されますMoped::BSON::Document。それは実際に拡張しますがHashいくつかのハッシュメソッドが期待どおりに機能しません。特に、指定されたキーが削除されたハッシュではなく、#except変更されていないものを返しますself

更新Moped::BSON::Documentの動作を適切に継承しますHash。文字列ではなく記号で属性に名前を付けようとしていたため、#except機能しませんでした。すぐに:しないexcept('pictures')でくださいexcept(:pictures)

4

2 に答える 2

11
Hash[e.attributes]

ここで、eはモデルインスタンスです

于 2013-02-21T15:52:33.477 に答える
4

とても古いものにぶつかったことをお詫びしますが、私自身とこの同じ問題に遭遇する将来のすべての人々のためにこれをここに残したいと思いました。私はMongoidORMfor Railsを使用しています。これは、MongoDBとの対話にMopedを内部的に使用します。

このgemにより、 https: //github.com/mindscratch/mongoid-indifferent-accessにHash手動で変換する時間を節約できました。HashWithIndifferentAccess

基本的に、MongoDBからのすべてのドキュメントをタイプに自動的に変換するある種のプリリターンフックがあるようですHashWithIndifferentAccess

これに関するポイントを探していません。これはこの問題のGoogleの最高の結果であり、私が狂気になるのを防いだので、ここに残したかっただけです。

于 2014-03-28T21:07:50.620 に答える