簡體   English   中英

主動模型序列化器 each_serializer 與序列化器

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM