rai*_*ine 7 ruby ruby-on-rails
我注意到当我想获取对象集合 (@user.all) 时,我必须使用 each_serializer
render json: @users, root: 'data', each_serializer: User::ShowSerializer
Run Code Online (Sandbox Code Playgroud)
而当我必须有一个对象时,显示动作序列化程序可以工作。
render json: @user, root: 'data', serializer: User::ShowSerializer
Run Code Online (Sandbox Code Playgroud)
请任何人都可以解释两者之间的区别
Pra*_*nde 11
可以将其视为eachRuby 中的迭代器。
当您只有一个 record 时@user,不需要迭代,作为回报,您将获得一个序列化的资源。这里我们直接应用一个serializer:
render json: @user, root: 'data', serializer: User::ShowSerializer
Run Code Online (Sandbox Code Playgroud)
认为这与
User::ShowSerializer(@user)
Run Code Online (Sandbox Code Playgroud)
当您有一个记录集合时,例如@user.all,您必须遍历每个资源以获取序列化的记录集合。我们在这里申请each_serializer:
render json: @users, root: 'data', each_serializer: User::ShowSerializer
Run Code Online (Sandbox Code Playgroud)
这与
@users.each do |user|
User::ShowSerializer(user)
end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6914 次 |
| 最近记录: |