[graphql-ruby] 扩展类型类

你是說要擴展類別嗎?

从graphql_ruby 1.8开始,类型定义变为基于class,但实际上仍在内部使用遗留对象。
那么,转换是如何进行的呢?每个类型对象(如GraphQL::Schema::Object)都会有一个名为to_graphql的方法,该方法会返回遗留对象(如GraphQL::ObjectType)。
因此,通过重写这个to_graphql方法来修改旧类型对象,可以设置类型对象的共享元数据等。我们将这一过程称为”类型类的扩展”。

尝试扩展对象类型

覆写 to_graphql 方法来适应对象类型。

module Types
  class BaseObject < GraphQL::Schema::Object
    def self.to_graphql
      type_defn = super
      type_defn.description = 'hogehoge'
      type_defn
    end
  end
end

我创建了一个名为”用户”的适当类型。

module Types
  class UserType < Types::BaseObject
    field :id, Integer, null: false
    field :name, String, null: false
  end
end

在控制台上,我确认了对象类型的扩展能够实现。

[1] pry(main)> Types::UserType.to_graphql.description
=> "hogehoge"

请注意

在graphql-ruby 2.0版本中,计划废弃旧版对象,并且此时将无法使用to_graphql方法。
另外,在2.0版本之前,gem的行为可能会发生变化,因此在使用此扩展时需要注意这一点。

在中国原生地,只需要一种选项 :
可作为参考

请参阅官方文件以获取详细信息。

广告
将在 10 秒后关闭
bannerAds