Graphql не возвращает связанные объекты в Rails - PullRequest
0 голосов
/ 25 апреля 2018

Я пытаюсь вернуть запрос GraphQL, который ссылается на ассоциацию, но я получаю следующее: enter image description here

В запросе мне нужны актерывернуть всех актеров (их 3), вместо этого я просто получаю имя: «Актер»?

Любая помощь будет принята с благодарностью!

Журнал сервера Rails: enter image description here

Мой код выглядит следующим образом:

app / graphql / types / movie_type.rb

Types::MovieType = GraphQL::ObjectType.define do
  name "Movie"

  field :id, !types.ID
  field :title, !types.String
  field :description, !types.String
  field :release_year, !types.Int
  field :actors do
    type Types::ActorType 
    argument :size, types.Int, default_value: 10
    resolve -> (movie, args, ctx) {
      movie.actors.limit(args[:size])
    }
  end
end

app / graphql / types / query_type.rb

field :movie, Types::MovieType do
    argument :id, !types.ID
    resolve -> (obj, args, ctx) {
      Movie.find(args[:id])
    }
end

app / models / movie.rb

class Movie < ApplicationRecord
  has_and_belongs_to_many :actors
  has_and_belongs_to_many :users
end

schema.rb

ActiveRecord::Schema.define(version: 20180424112411) do

  create_table "actors", force: :cascade do |t|
    t.string "name"
    t.string "image"
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
  end

  create_table "actors_movies", id: false, force: :cascade do |t|
    t.integer "actor_id", null: false
    t.integer "movie_id", null: false
  end

  create_table "movies", force: :cascade do |t|
    t.string "title"
    t.integer "release_year"
    t.text "description"
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
  end
end

1 Ответ

0 голосов
/ 25 апреля 2018

Я нашел ответ, внутри movie_type.rb мне нужно было это изменение:

type types [Types :: ActorType]

Я думаю, это должно быть из-заустановив его так, чтобы он возвращал массив и не возвращал ни одной сущности.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...