1

Я использую сериализаторы ActiveModel в проекте Rails.Подмножество объекта с помощью ActiveModel Serializer

Сериализатор по умолчанию для объекта довольно большой, а вложение объекта в ответы API приводит к созданию довольно больших объектов JSON.

Иногда я хочу встроить объект, но мне нужно только небольшое подмножество атрибутов объекта, которое будет присутствовать в JSON.

Очевидно, что я мог бы сделать что-то вроде этого:

render json: @user, serializer: SmallerUserSerializer

, но это приведет к большому количеству дублирования.

Есть ли опция, которую я могу передать в сериализатор, чтобы она включала только подмножество атрибутов сериализаторов? Например:

class BlogSerializer # This is pseudocode. Does not actually work. has_one :user, only_show: [:user_id, :profile_url] end

ответ

0

Создать метод и вызвать to_json объекта пользователя. Затем добавьте это имя метода в список атрибутов. Этот метод можно также назвать пользователем.

class BlogSerializer 
    attributes :id, :user 

    def user 
    object.user.to_json(only: [ :id, :profile_url ]) 
    end 
end 
0

Создать метод и вызвать to_json объекта пользователя. Затем добавьте это имя метода в список атрибутов. Этот метод можно также назвать пользователем.

class BlogSerializer 
    require 'json' 
    attributes :id, :user 

    def user 
    JSON.parse "#{object.user.to_json(only: [ :id, :profile_url ])}" 
    end 
end 
Смежные вопросы