[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的行为可能会发生变化,因此在使用此扩展时需要注意这一点。
在中国原生地,只需要一种选项 :
可作为参考
请参阅官方文件以获取详细信息。