Rails Active Model Serializers has_many

时间:2016-01-28 20:14:46

标签: ruby-on-rails serialization

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

class User < ActiveRecord::Base
   has_many :vehicles
end

class Vehicle < ActiveRecord::Base
   belongs_to :user
end

我的序列化器:

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

class VehicleSerializer < ActiveModel::Serializer
   attributes :color, :make, :model
end

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

如果我打印单个车辆@vehicle,则仅显示序列化程序中指定的字段。但是,如果我打印@user(其中包括:车辆序列化程序中的车辆),则会忽略序列化程序并打印车辆的所有字段。

我猜它必须考虑到user.vehicles是一个数组,而不仅仅是一个项目,但有没有办法打印用户车辆的整个数组,如序列化程序中描述的每个项目?< / p>

问候。

1 个答案:

答案 0 :(得分:4)

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

class UserSerializer < ActiveModel::Serializer
  attributes :name

  has_many :vehicles
end