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

#ruby-on-rails #serialization

#ruby-on-rails #сериализация

Вопрос:

Есть какой-нибудь способ вернуть has_many :roles массив вместо объекта?

 class UserSerializer < ActiveModel::Serializer
  attributes :id, :name, :nickname, :image, :roles

  has_many :roles
end
 

Спасибо.

Ответ №1:

Вы можете создавать свои собственные пользовательские методы в сериализаторе и использовать их в качестве атрибутов

 class UserSerializer < ActiveModel::Serializer
  attributes :role_names

  def role_names
    object.roles.map(amp;:name)
  end
end
 

Ответ №2:

Обычно для этого используются включения. Однако я не очень хорошо знаком с использованием сериализаторов.