2017-08-25 4 views
0

アクティブモデルシリアライザでjson apiアダプタで使用されているIDをカスタマイズできます。アクティブモデルシリアライザでjson-apiシリアル化モデルのIDをカスタマイズするにはどうすればよいですか?

つまり、シリアル化されている特定のモデルの実際のRuby-on-Rails IDは、さまざまな理由で公開対面とはみなされませんが、代替の公開対処の一意識別子が使用可能なプロジェクトがあります。

このIDをjson apiのシリアル化されたコンテンツのIDとして使用したいと思いますが、json apiシリアライザ内のIDをオーバーライドする明白な方法を見つけられませんでした。

{ 
"data": 
    [{ 
    "id" : "2aef7e", 
    "type" : "my-model", 
    "attributes" : {...}, 
    "relationships" : {...} 
    },{ 
    "id" : "3b47c0", 
    "type" : "my-model", 
    "attributes" : {...}, 
    "relationships" : {...} 
    }], 
"included" : [ ... ] 
} 

の代わり:

{ 
"data": 
    [{ 
    "id" : "1", 
    "type" : "my-model", 
    "attributes" : {...}, 
    "relationships" : {...} 
    },{ 
    "id" : "2", 
    "type" : "my-model", 
    "attributes" : {...}, 
    "relationships" : {...} 
    }], 
"included" : [ ... ] 
} 

が、上書きの明白な手段を見つけることができなかった

基本的には、モデル[{ id: 1, alt_id: '2aef7e'}, { id: 2, alt_id: '3b47c0' } ...]与えられた私は、シリアル化されたバージョンを作成する方法をみたいですシリアライゼーションのID値。

+0

(なぜ '属性ん:?idは...'は動作しません) – dgsan

答えて

0

シリアライザ内でメソッドを定義して、オブジェクトのメソッドを使用しないようにすることができます。

class MySerializer < ActiveModel::Serializer 
    attribute :id 
    def id 
    object.alt_id 
    end 
end 
+0

だから私は慎重にドキュメントを読んでいないためYAY?私はまだいくつかの例( 'attribute(:name){'value'}')のようにブロックを使うことは ':id'では特にうまくいかないのは不思議です。 – dgsan

関連する問題