Search code examples
ruby-on-railsrubyruby-on-rails-5active-model-serializers

Add metadata to :attributes serializer (Active Model Serializers)


Is there a way I can add a non-model metadata attribute onto an each_serializer, without using the :json_api adapter?

render json: invoices, each_serializer: Invoices::ItemizedSerializer

I want it to be...

{
  data: [{..invoice 1...}, {...invoice 2...}]
  metadata: {total: 500}
}

instead of

[
  {..invoice 1...},
  {...invoice 2...}
]

Solution

  • You can pass a custom adapter on a per controller basis:

    render json: invoices, adapter: :json, each_serializer: Invoices::ItemizedSerializer, meta: {grand_total: grand_total}