2017-10-19 13 views
0

私は2つの関連モデルparent= Activityを持っていますが、それはコストに関連しています。 シリアライザを使用するアクティビティの詳細を取得するためのAPIコールを行いますが、コストもシリアル化する必要があります。だから、ActivitySerializerの内側に私はこれを試してみました:アクティブモデルシリアライザhas_manyアソシエーションが動作しません

Class ActivitySerializer: < ActiveModel::Serializer 


ActiveModel::Serializer.config.key_transform = :unaltered 




attributes :id, 
      :name, 
      :description 
... 
has_many costs, each_serializer: CostSerializer 
end 

CostSerializerは次のようになります。

class CostSerializer < ActiveModel::Serializer 

ActiveModel::Serializer.config.key_transform = :unaltered 

attributes :id, 
      :amount, 
      :description 
end 

結果は、活動データがよさそうだが、費用データは私にこれを与えることです:

relationships":{"costs":{"data":[{"id":"20","type":"costs"}]} 

金額と説明がドロップされる理由をよく分かりません。 私はこれを行う場合、それは(ActivitySerializer内の属性にlistCostsを追加)作品:関係を持っていない、

def listCosts 
    object.costs.map do |cost| 
    CostSerializer.new(cost, scope:scope, root: false, event: object) 
    end 
end 

出力が少し異なりますが、シリアライザを持っている私がしたいことを属性。 AMS 0.10でRails 5.1.3を使用しています。

答えて

0

私はあなたがjson_apiアダプタを使用していると仮定しています。 http://jsonapi.org/examples/のJSON API仕様のサンプルでは、​​関連するモデルの「タイプ」および「ID」以外の属性は、「included」プロパティを使用して公開できます。あなたは、json_apiアダプターを使用して、 https://github.com/rails-api/active_model_serializers/issues/1056

+0

でディスカッションをチェックアウトすることができます。追加されたリンクはわかりました。ありがとうございました。 –

関連する問題