2009-03-25 14 views
5

私はJSONシリアライズが ActiveRecordのシリアル化にさらに属性を追加しますか?

render :json => "#{current_object.serialize(:json, :attributes => [:id, :name])} 

細かい作業を持っていますが、私もそれがクライアントに戻される前JSONにさらにデータを追加したいです。主にauth_token。

グーグルで回っているけど、シリアル化するとJSONに他のデータを追加/マージできるようにするオプションが見つかりません。このような何かを見つけることがHopting

...

にし、上に移動、それをハック
current_object.serialize(:json, :attriubtes => [:id, name], :magic_option => {:form_authenticity_token => "#{form_authenticity_token}"}) 

答えて

0

...

current_object.serialize(:json, :attributes => [:id, :name]).gsub(/\}$/, ", \"form_authenticity_token\": \"#{form_authenticity_token}\"}") 
4

あなたがしたい:と同じように動作する方法キー:属性が、しかし、与えられた方法の結果が含まれます。あなたのケースでは:それは価値がある何のため

current_object.to_json(
    :attributes => [:id, :name], 
    :methods => [:form_authenticity_token] 
) 
+0

申し訳ありませんが、私は物事を少し良く説明できたと思います。追加するデータ(form_aithenticity_token)は、ActiveRecordモデルの関数ではありません。また、#to_jsonを呼び出すとルートノードが除外されます。 {model_name:{...}} –

1

は、私はあなたがこのように欲しいものを一緒にハッキング最近のRailsで:

your_objectはあなたがシリアライズしたいものである
sr = ActiveRecord::Serialization::Serializer.new(your_object, some_serialization_options).serializable_record 
sr['extra'] = my_extra_calculation(some_parameters) 
format.json { render :json => sr } 

、some_serialization_optionsはあなたの標準的なものです: include、:onlyなどのパラメータがあり、my_extra_calculationは値を設定するために必要なものです。

ジミー

関連する問題