Я использую ActiveModelSerializer 0.10. У меня есть коллекция Account
s, которую я хочу сериализовать. Есть ли способ установить определенный сериализатор для каждой модели в коллекции? Я хочу, чтобы мой контроллер возвращал что-то вроде этого:Активная модель Serializer с различным сериализатором для каждой модели
{"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-интерфейс администратора. Пользовательский 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
с. Могу ли я как-то использовать Admin::Account::GroupSerializer
для Group
объектов в коллекции и Admin::Accounts::UserSerializer
для User
объектов в коллекции?