В настоящее время я пытаюсь изучить GraphQL, но сталкиваюсь с проблемой. Проблема, возможно, в неправильном понимании того, как писать мои типы. Когда у меня был тип пользователя как
module Types
UserType = GraphQL::ObjectType.define do
name 'User'
field :id, !types.ID
field :username, !types.String
field :email, !types.String, property: :email_address
field :workspaces, types[Types::WorkspaceType]
end
end
Я могу без проблем вернуть массив рабочих пространств. Теперь проблема возникает, когда я пытаюсь вернуть массив пользователей, связанных с этим рабочим пространством. Тип моего рабочего места выглядит так
class Types::WorkspaceType < Types::BaseObject
field :id, ID, null: false
field :user_id, ID, null: false
field :name, String, null: false
field :members, types[Types::UserType]
end
Когда я пытаюсь выполнить запрос при получении рабочей области, я получаю сообщение об ошибке
"error": {
"message": "undefined local variable or method `types' for Types::UserType:Class",
Бэкэнд, который я использую, - это Ruby on Rails. Тем, у кого есть некоторый опыт работы с GraphQL, я хотел бы получить отзывы о том, что я делаю неправильно, а также о том, как правильно соединять типы между каждой моделью. Если вам потребуется дополнительная информация или вы хотите получить разъяснения, не стесняйтесь спрашивать.
Спасибо.

gem-пакет graphql имеет два разных «стиля» объявления объектов GraphQL с использованием Ruby DSL (и он также может напрямую импортировать язык схемы GraphQL). В более старом стиле (который сейчас исключен из документации) используется GraphQL::ObjectType.define, и большинство ссылок необходимо квалифицировать с помощью синтаксиса types. В новом стиле используется наследование классов Ruby. и не использует types.
Вкратце: я думаю, ваш код будет работать, если вы просто измените последнее определение поля на
field :members, [Types::UserType]