У меня проблемы с 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
Это не сработало.Кто-нибудь может мне помочь?