active_model_serializers/docs/howto/passing_arbitrary_options.md
2016-03-04 11:09:38 -05:00

944 B

Back to Guides

Passing Arbitrary Options To A Serializer

In addition to the serialization_scope, any options passed to render that are not reserved for the adapter are available in the serializer as instance_options.

For example, we could pass in a field, such as user_id into our serializer.

# posts_controller.rb
class PostsController < ApplicationController
  def dashboard  
    render json: @post, user_id: 12
  end
end

# post_serializer.rb
class PostSerializer < ActiveModel::Serializer
  attributes :id, :title, :body

  def comments_by_me  
    Comments.where(user_id: instance_options[:user_id], post_id: object.id)
  end
end

Since user_id isn't a reserved adapter option, we can process it via a serializer method. The option is passed via the instance_options hash.