![](/img/trans.png)
[英]Active Model Serializer with different serializer for each model
[英]Active model serializer each_serializer vs serializer
我注意到當我想獲取對象集合 (@user.all) 時,我必須使用 each_serializer
render json: @users, root: 'data', each_serializer: User::ShowSerializer
而當我必須有一個對象時,顯示動作序列化程序可以工作。
render json: @user, root: 'data', serializer: User::ShowSerializer
請任何人都可以解釋兩者之間的區別
將其視為 Ruby 中的each
迭代器。
當您只有一條記錄@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
對於一個集合
:serializer指定集合序列化器和
:each_serializer為集合中的每個資源指定序列化器。 對於單個資源, :serializer 選項是資源序列化
請查看此文檔以獲取更多詳細信息
基本上:serializer返回一個 JSON 對象
和:each_serializer返回 JSON 對象數組
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.