返回多个序列化的模型。添加到哈希后停止序列化

时间:2018-12-05 18:39:27

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

我正在使用:

  • active_model_serializers 0.10.8
  • 红宝石2.5.3p105
  • Rails 5.2.1.1

序列化器:

class CarSerializer < ActiveModel::Serializer
  attributes :make, :model
end

如果我这样做:

class MyController < ApplicationController
  def index
    @cars = Car.all

    render json: @cars
  end
end

然后,我的API将按预期返回,仅返回make和model属性(而不是ID或时间戳)。一切都很好。

如果我将控制器更改为:

@cars = Car.all

render json: {
  cars: @cars
}

它不再使用序列化器并返回完整模型(id,make,model,timestamps)。

我想这样做,因为我想返回多个模型,即:

render json: {
  cars: @cars,
  drivers: @drivers
}

我要去哪里错了?当我将其添加到哈希中时,为什么不序列化?

红宝石和铁轨的新手,对于任何愚蠢的错误表示歉意!

谢谢!

1 个答案:

答案 0 :(得分:0)

计算出来,应该是:

render json: {
      cars: ActiveModelSerializers::SerializableResource.new(Car.all),
      drivers: ActiveModelSerializers::SerializableResource.new(Driver.all)
}