活动模型序列化器each_serializer与序列化器

时间:2018-12-03 03:51:17

标签: ruby-on-rails ruby

我已经注意到,当我想获取对象集合(@ user.all)时必须使用each_serializer

render json: @users, root: 'data', each_serializer: User::ShowSerializer

而当我不得不让一个对象显示动作序列化程序时。

render json: @user, root: 'data', serializer: User::ShowSerializer

请问谁能解释两者之间的区别

3 个答案:

答案 0 :(得分:2)

将其视为Ruby中的每个迭代器。

当您有一条记录@user时,无需进行迭代,而得到的是单个序列化资源,这里我们直接应用serializer

render json: @user, root: 'data', serializer: User::ShowSerializer

认为是

User::ShowSerializer(@user)

当您有记录集合@user.all时,您必须迭代每个资源以获得序列化的记录集合,这里我们应用each_serializer

render json: @users, root: 'data', each_serializer: User::ShowSerializer

此为

@users.each do |user|
  User::ShowSerializer(user)
end

答案 1 :(得分:0)

对于收藏

:serializer 指定集合序列化器和

:each_serializer 指定集合中每个资源的序列化器。 对于单个资源,:serializer选项是资源序列化

请查看this documentation以获得更多详细信息

答案 2 :(得分:0)

基本上 :serializer 返回JSON对象

:each_serializer 返回JSON对象数组