0

Rails と MongoDB はまったくの初心者です。Rails-3 と MongoDB をMongoMapperと共に使用して、データを保存し、データを json 形式で返す小さなアプリケーションを作成しています。クライアントは、特定の形式の json を想定しています。しかし、保存したドキュメントで同じ形式を作成することはできません。

必須フォーマット:

{"Name":"ABC","max":{"key":"KEY-1","value":"100"},"min":{"key":"KEY-2","value":"0"}}

親ドキュメント

class Story
 include MongoMapper::Document
 key :item,     String
 key :max,      
 key :min,      
end

私が望むのは、ドキュメント {"key":"KEY-1","value":"100"} を最初に作成し、そのドキュメントを親ドキュメントの最大キーにマップし、同様に別のドキュメントを最小キーにマップすることです。

私は多くの方法を試しましたが、それを機能させることができません。

また、クライアントに返す際に、レスポンス JSON から フィールドid (オブジェクト id)を削除したいと考えています。サンプル JSON:

{"id":"51e64bce44ae8bf1fea3f78f","text":"Text 1","value":"Value 1"}

どうやってやるの?

更新 私自身の質問の1つに答える:「json応答から必須ではないフィールドを削除する」

これは、Model クラス内で as_json メソッドを定義することで実行できます。これにより、生成されたjsonにフィールド「キー」と「値」のみが追加されます。

def as_json(options={}){
   :key  =>self.key,
   :value => self.value
}
4

1 に答える 1

0

私自身の質問への回答: 私は周りを検索しましたが、私の質問に対する満足のいく答えを見つけることができませんでした.

一時的に、内部クラスのハッシュを作成し、値を割り当てていました。これは、少し汚い一時的な解決策でした。

同じ質問を mongomapper グループに投稿し、回答を得ました。ここでその答えを共有する..

Innerと呼ばれるモデルとOuterと呼ばれる別のモデルがあるとします。

one :max, :class_name => Inner

これにより、インナークラス オブジェクトがアウタークラスのmax属性に埋め込まれます。

于 2013-07-22T11:59:51.570 に答える