ActiveModelSerializer - сериализовать объект массива - PullRequest
0 голосов
/ 26 января 2019

У меня проблемы с ActiveModelSerializer.

Модель test.rb:

class Test < ActiveModel::Serializer
  attr_accessor :id, :userName, :lista, :test2

  def initialize params = {}
    @lista = Array.new
    @test2 = Array.new
    params.each { |key, value| send "#{key}=", value }
  end
end

Модель test2.rb:

class Test2 < ActiveModel::Serializer
  attr_accessor :id, :userName

  def initialize params = {}
    params.each { |key, value| send "#{key}=", value }
  end
end

test_serializer.rb:

class TestSerializer < ActiveModel::Serializer
  attributes :id, :userName, :lista
  attributes :test2

  public

  def test2
    Test2Serializer.new(object.test2).as_json
  end
end

test2_serializer.rb:

class Test2Serializer < ActiveModel::Serializer
  attributes :id, :userName
end

Я получаю сообщение об ошибке:

NoMethodError (undefined methodread_attribute_for_serialization’ for #Array:0x00007f1bb52da460):

После отладки кода я обнаружил, что исключение из этой строки:

object.read_attribute_for_serialization(attr)

В переменной объекта является массив.Я думаю, что это должно быть объектом.Поэтому я попытался изменить

Test2Serializer.new(object.test2).as_json

oto

json: object.test2, each_serializer: Test2Serializer

или:

object.test2, each_serializer: Test2Serializer

Это не сработало.Кто-нибудь может мне помочь?

...