【问题标题】:How to get nested attributes using active_model_serializers如何使用 active_model_serializers 获取嵌套属性
【发布时间】:2018-06-26 05:26:41
【问题描述】:

我使用 active_model_serializers gem,我需要获取 Service 模型的嵌套属性

class Category < ActiveRecord::Base
  has_many :subcategories
end

class Subcategory < ActiveRecord::Base
  has_many :services
end

class Service < ActiveRecord::Base
  belongs_to :subcategory
end

序列化器:

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

类别控制器:

class CategoriesController < BaseController
  def index
    categories = Category.all

    render json: categories, each_serializer: CategorySerializer
  end
end

类别序列化程序不返回 Service 模型的嵌套属性。

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

我需要在子类别中使用嵌套服务模型获取 json 结果 我使用 active_model_serializers (~> 0.10.2) 怎么做?

【问题讨论】:

  • config/initializers/active_model_serializer.rb文件中添加ActiveModel::Serializer.config.default_includes = '**'
  • 非常感谢!这对我有帮助

标签: ruby-on-rails ruby active-model-serializers


【解决方案1】:

config/initializers/active_model_serializer.rb文件中添加ActiveModel::Serializer.config.default_includes = '**'

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-16
    • 1970-01-01
    • 1970-01-01
    • 2020-08-14
    • 1970-01-01
    • 2018-07-31
    相关资源
    最近更新 更多