Как использовать Rails Helpers в graphql?

Как я могу использовать помощники из каталога /app/helpers в моем каталоге /app/graphql? Например, есть тип данных, который является вложенным объектом JSON, и я получил файл схемы JSON, который описывает его структуру. Также есть 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 не работает.


person Yannick Schröder    schedule 14.08.2020    source источник


Ответы (1)


include добавляет методы класса JsonSchemaHelper в качестве методов экземпляра класса Validators::Node. self.validate!(ast) — это метод класса, и вы пытаетесь вызвать json_schema_validate как метод класса. Измените include JsonSchemaHelper на extend JsonSchemaHelper.

person Yakov    schedule 14.08.2020