How to get nested attributes using active_model_serializers

I using active_model_serializers gem, and I need to get nested attributes of Service model

class Category < ActiveRecord::Base
  has_many :subcategories
end

class Subcategory < ActiveRecord::Base
  has_many :services
end

class Service < ActiveRecord::Base
  belongs_to :subcategory
end

Serializers:

class CategorySerializer < ActiveModel::Serializer
  attributes :id, :title

  has_many   :subcategories,      serializer: SubcategorySerializer
end

class SubcategorySerializer < ActiveModel::Serializer
  attributes :id, :title

  has_many   :services,      serializer: SubcategorySerializer
end

class ServiceSerializer < ActiveModel::Serializer
  attributes :id, :title
end

Category Controller:

class CategoriesController < BaseController
  def index
    categories = Category.all

    render json: categories, each_serializer: CategorySerializer
  end
end

Category serializers don't return nested attributes of Service model.

{
        "id": 1,
        "title": "Category 1",
        "subcategories": [
            {
                "id": 1,
                "title": "Sub category 1"
            },
            {
                "id": 2,
                "title": "Sub category 2"
            }
    ]
  }

I need to get json result with nested Service model in subcategory I using active_model_serializers (~> 0.10.2) How do that?

Upvotes: 0

Views: 395

Answers (1)

Emu
Emu

Reputation: 5895

In config/initializers/active_model_serializer.rb file add ActiveModel::Serializer.config.default_includes = '**'

Upvotes: 2

Related Questions