GraphQL gem 与 Rails,似乎找不到正确的类型定义?

thi*_*bus 1 ruby-on-rails graphql

我这样定义了一个 UserType:

class Types::UserType < GraphQL::Schema::Object
  field :id, ID, null: false
  field :username, String, null: false
  field :full_name, String, null: true
end
Run Code Online (Sandbox Code Playgroud)

这些字段中的每一个都存在于 Rails 模型中,并且在 GraphQL Gem 1.8 之前的升级中,我能够在查询中使用 full_name 。

当我运行查询时:

query {
  users {
    username
    id
    full_name
  }
}
Run Code Online (Sandbox Code Playgroud)

我得到:"message": "Field 'full_name' doesn't exist on type 'User'",

如果我删除full_name,我会得到我期望的数据。我以什么方式错误地处理这个问题?作为参考,我的QueryType定义为:

class Types::QueryType < GraphQL::Schema::Object
  # Add root-level fields here.
  # They will be entry points for queries on your schema.
  field :users, [UserType, null: true], null: false do
    argument :id, Integer, required: false
  end

  def users(**args)
    args[:id]
    if args[:id]
      User.where(id: args[:id])
    else
      User.all
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

Kev*_*ert 5

我相信问题full_name应该出现fullName在您的查询中。在 1.8.x 中,模式中的字段会自动camalized。

作为惯例,字段和参数名称应加下划线。它们将在底层 GraphQL 类型中转换为驼峰命名法,并在架构本身中采用驼峰命名法。

-- http://graphql-ruby.org/type_definitions/objects.html