Я создаю 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».
заранее спасибо