0

如何在我的 /app/graphql 目录中使用 /app/helpers 目录中的 Helpers?例如,有一个数据类型是嵌套的 JSON 对象,我得到了一个 JSON Schema 文件来描述它的结构。还有一个 JsonSchemaHelper,我想用它来针对 JSON 模式验证标量类型。像那样:

class Types::Scalar::Node < Types::Base::BaseScalar
  def self.coerce_input(value, _context)
    if Validators::GraphqlValidator.is_parsable_json?(value)
      value = JSON.parse(value)
    end
    Validators::Node.validate!(value)
    value
  end

  #Validators could be used to check if it fit the client-side declared type
  def self.coerce_result(value, _context)
    Validators::Node.validate!(value)
    value
  end
end

验证器看起来像:

module Validators
  class Node
    include JsonSchemaHelper
    def self.validate!(ast)
      json_schema_validate('Node', ast)
    end
  end
end

include JsonSchemaHelper不起作用。

4

1 回答 1

1

include添加方法JsonSchemaHelper作为Validators::Node类的实例方法。self.validate!(ast)是一个类方法,你尝试json_schema_validate作为一个类方法调用。更改include JsonSchemaHelperextend JsonSchemaHelper

于 2020-08-14T09:59:49.387 回答