Как я могу переопределить соглашение о присвоении имен camelCase в graphql-ruby? - PullRequest
0 голосов
/ 04 декабря 2018

Я использую превосходный гем graphql-ruby (http://graphql -ruby.org / ).У меня есть структура данных, которая хранит строки i18n по существу в виде хэшей: {'en': 'Hello', 'es': 'Hola'}.Прекрасно работает в обычных условиях.

Однако мы только что добавили упрощенный и традиционный китайский языки с кодами языков «zh-CN» и «zh-TW».Из-за того, что graphql-ruby переводит все поля ввода в camelCase, они переводятся как 'zh-cn' и 'zh-tw'.

Вот как выглядит мой класс ввода:

class CoreGql::InputTypes::I18nStringInput < GraphQL::Schema::InputObject
  graphql_name "I18nStringInput"

  argument :en, String, :required=>false
  argument :es, String, :required=>false
  argument :de, String, :required=>false
  argument :fr, String, :required=>false
  argument :is, String, :required=>false
  argument :ja, String, :required=>false
  argument :nl, String, :required=>false
  argument 'zh-CN', String, :required=>false
  argument 'zh-TW', String, :required=>false
end

Есть ли способ переопределить соглашение об именах graphql-ruby для полей и / или аргументов?Я хочу, чтобы это были именно 'zh-CN' и 'zh-TW'.

1 Ответ

0 голосов
/ 04 декабря 2018

argument :'zh-CN', String, :required=>false, :camelize => false может сбросить схему, которую вы описали.Однако на GraphiQL выдает ошибки:

Error: Names must match /^[_a-zA-Z][_a-zA-Z0-9]*$/ but "zh-CN" does not.
    at assertValidName (http://localhost:3000/assets/graphiql/rails/graphiql-0.11.11.self-8e737fccee2b9e37d473d51a9032299b320e847f04671cb2030e717b0009b2c1.js?body=1:30302:11)
    at http://localhost:3000/assets/graphiql/rails/graphiql-0.11.11.self-8e737fccee2b9e37d473d51a9032299b320e847f04671cb2030e717b0009b2c1.js?body=1:28613:44
    at Array.forEach (<anonymous>)
    at GraphQLInputObjectType._defineFieldMap (http://localhost:3000/assets/graphiql/rails/graphiql-0.11.11.self-8e737fccee2b9e37d473d51a9032299b320e847f04671cb2030e717b0009b2c1.js?body=1:28612:16)
    at GraphQLInputObjectType.getFields (http://localhost:3000/assets/graphiql/rails/graphiql-0.11.11.self-8e737fccee2b9e37d473d51a9032299b320e847f04671cb2030e717b0009b2c1.js?body=1:28601:49)
    at typeMapReducer (http://localhost:3000/assets/graphiql/rails/graphiql-0.11.11.self-8e737fccee2b9e37d473d51a9032299b320e847f04671cb2030e717b0009b2c1.js?body=1:29968:26)
    at Array.reduce (<anonymous>)
    at http://localhost:3000/assets/graphiql/rails/graphiql-0.11.11.self-8e737fccee2b9e37d473d51a9032299b320e847f04671cb2030e717b0009b2c1.js?body=1:29961:36
    at Array.forEach (<anonymous>)
    at typeMapReducer (http://localhost:3000/assets/graphiql/rails/graphiql-0.11.11.self-8e737fccee2b9e37d473d51a9032299b320e847f04671cb2030e717b0009b2c1.js?body=1:29954:27)

Мне кажется, лучше использовать имя типа zh_CN с camelize: false

...