2009-05-12 4 views
3

JSONを返す単純なAPIを介していくつかのリソースを公開しています。消費者がリソースを構築する必要がないように、各リソースへのパスを注入したいと思います。 User.all.to_jsonのようなもののための所望の出力の例:私はヘルパーを使用し続けると、この種の情報でモデルを汚染しないようにたいURLを生成するためにRailsのJSONにシリアル化されているActiveRecordレコードに余分なデータを追加するにはどうすればよいですか?

users: [ 
    {user: { 
    id: 1, 
    name: 'Zaphod', 
    url: 'http://domain.com/users/1.json' 
    }}, 
    {user: { 
    id: 2, 
    name: 'Baron Munchausen', 
    url: 'http://domain.com/users/2.json' 
    }} 
]; 

。これを行う方法はありますか?それとも、これをモデルに入れるだけの方がいいですか?

答えて

0

あなたはこれを確認しましたか:http://json.rubyforge.org/

class Range 
    def to_json(*a) 
    { 
     'json_class' => self.class.name, 
     'data'   => [ first, last, exclude_end? ] 
    }.to_json(*a) 
    end 

    def self.json_create(o) 
    new(*o['data']) 
    end 
end 
4

あなたがモデルのメソッドを持っている場合は、あなただけの:methodsパラメータを組み込みto_jsonコールを使用することができますJSONシリアライズに含める:

class Range 
    def url 
    # generate url 
    ... 
    end 
end 

Range.find(:first).to_json(:methods => :url) 
関連する問題