我已经注意到,当我想获取对象集合(@ user.all)时必须使用each_serializer
render json: @users, root: 'data', each_serializer: User::ShowSerializer
而当我不得不让一个对象显示动作序列化程序时。
render json: @user, root: 'data', serializer: User::ShowSerializer
请问谁能解释两者之间的区别
答案 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对象数组