Сериализатор активной модели each_serializer vs serializer - PullRequest
0 голосов
/ 03 декабря 2018

Я заметил, что когда я хочу получить коллекцию объектов (@ user.all), я должен использовать each_serializer

render json: @users, root: 'data', each_serializer: User::ShowSerializer

, тогда как, когда мне нужно иметь один объект, показывается действие сериализатора.

render json: @user, root: 'data', serializer: User::ShowSerializer

Пожалуйста, кто-нибудь может объяснить разницу между этими двумя

Ответы [ 3 ]

0 голосов
/ 03 декабря 2018

В основном : сериализатор возвращает объект JSON

и : each_serializer возвращает массив объектов JSON

0 голосов
/ 03 декабря 2018

Думайте об этом как о каждом итераторе в Ruby.

Когда у вас есть одна запись @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
0 голосов
/ 03 декабря 2018

Для коллекции

: сериализатор указывает сериализатор коллекции, а

: each_serializer указывает сериализатор для каждого ресурса в коллекции.Для отдельного ресурса опция: serializer - это сериализация ресурса

Для получения более подробной информации ознакомьтесь с этой документацией

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...