Rails 活动模型序列化程序 has_many

unk*_*own 0 serialization ruby-on-rails

我正在使用 ActiveModelSerializers gem。在我的模型中,用户可以拥有许多车辆

class User < ActiveRecord::Base
   has_many :vehicles
end

class Vehicle < ActiveRecord::Base
   belongs_to :user
end
Run Code Online (Sandbox Code Playgroud)

我的序列化程序:

class UserSerializer < ActiveModel::Serializer
  attributes :name, :vehicles
end

class VehicleSerializer < ActiveModel::Serializer
   attributes :color, :make, :model
end
Run Code Online (Sandbox Code Playgroud)

车辆具有的属性不仅仅是颜色、品牌和型号。

如果我打印单个 Vehicle @vehicle,则仅显示序列化程序中指定的字段。但是,如果我打印@user(它的序列化程序中包括 :vehicles),那么序列化程序将被忽略,并且 Vehicle 的所有字段都被打印出来。

我猜这与 user.vehicles 是一个数组而不仅仅是一个项目这一事实有关,但是有没有办法打印用户车辆的整个数组,如每个项目的序列化程序中所述?

问候。

小智 5

AMS 通过ActiveModel::Serializer::Association结构支持关联。这意味着您可以拥有UserSerializer以下内容:

class UserSerializer < ActiveModel::Serializer
  attributes :name

  has_many :vehicles
end
Run Code Online (Sandbox Code Playgroud)