ActiveModelSerializer 0.10を使用しています。私はAccount
のコレクションを持っています。コレクションの各モデルに特定のシリアライザを設定する方法はありますか?私のコントローラは次のようなものを返します:各モデルのシリアライザが異なるアクティブモデルシリアライザ
{"accounts":
[
{"type":"Group","groupname":"A group","internal_info":"Sensitive info"},
{"type":"User","first_name":"Bob","last_name":"Smith","internal_info":"Sensitive info"}
]
}
私のAPIは、ユーザーAPIと管理APIの2つの部分に分かれています。ユーザーAPIは、ActiveModelSerializerが自動的に検出する標準シリアライザを使用します。この
render json: @accounts
のようなものは、これを返す(その機密情報に注意してください含まれていません)になります。
{"accounts":
[
{"type":"Group","groupname":"A group"},
{"type":"User","first_name":"Bob","last_name":"Smith"}
]
}
管理APIは、カスタムシリアライザを使用しています(彼らは、例えばinternal_info
のために、より多くの詳細が含まれます)。どのように私の管理APIでそのようなコレクションをレンダリングできますか?私はほとんどの場合、完璧に動作
render json: @accounts, each_serializer: Admin::AccountSerializer
を使用することができます知っているが、この特定のケースでは、私はAccount
秒の2種類があります。何とかコレクション内のオブジェクトがGroup
の場合はAdmin::Account::GroupSerializer
、コレクションの場合はAdmin::Accounts::UserSerializer
がUser
のオブジェクトに使用できますか?