Я использую 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. Пользовательский 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
объектов в коллекции?