Отношения Rails Active_Model_Serializer не сериализуются

Я создаю API Rails с драгоценным камнем active_model_serializer.

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

Прежде всего, вот мои модели:

пользователь.rb

class User < ApplicationRecord
has_many :component

компонент.rb

class Component < ActiveRecord::Base
  belongs_to :user

  has_many :profiles
end

А вот мой users_controller.rb:

class UsersController < ApplicationController

    def show
        @user = User.first

        render(                              //
            status: :ok,                     //
            json: @user,                     //updated
            serializer: UserSerializer       //
        )                                    //
    end
end

И мои сериализаторы.

user_serializer.rb

class UserSerializer < ApplicationSerializer
  attributes :id, :component

  has_many :component, serializer: ComponentSerializer //updated
end

component_serializer.rb

class ComponentSerializer < UserSerializer
  attribute :id, :profile, :test

  def test
    'this is a test'
  end
end

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

Запрос JSON с component_serializer.rb

Если я удалю файл «component_serializer.rb», все атрибуты будут перечислены в разделе «компонент» в атрибуте отношения, как показано на втором снимке экрана.

Запрос JSON без component_serializer.rb

Я что-то упустил? Я искал сейчас довольно долго, но не нашел ответа.

Не знаю, имеет ли это значение, но я использую Rails 5.0.1 на сервере Linux с геммом «active_model_serializers», «~> 0.10.0».

заранее спасибо


person Dennis    schedule 26.02.2017    source источник


Ответы (1)