Я играю с очень простым API-интерфейсом GraphQL в Rails.
У меня есть модель 'Gin', где я могу вернуть несколько записей, которые есть в БД, однако при попыткедобавить джина через мутацию, я получаю проблему с типом поля:
mutation {
createGin(name: "Plymouth",
description: "Gin made in Plymouth",
abv: "40",
url: "http://www.plymouthgin.com",) {
id
name
description
abv
url
}
}
выдает следующую ошибку:
"message": "Аргумент 'abv'on Поле 'createGin' имеет недопустимое значение. Ожидаемый тип 'Int'. ",
поле abv
в БД является целым числом.
gin_type.rb
Types::GinType = GraphQL::ObjectType.define do
name 'Gin'
field :id, !types.ID
field :name, !types.String
field :description, !types.String
field :abv, !types.Int
field :url, !types.String
end
create_gin.rb
class Resolvers::CreateGin < GraphQL::Function
argument :name, !types.String
argument :description, !types.String
argument :abv, !types.Int
argument :url, !types.String
type Types::GinType
def call(_obj, args, _ctx)
Gin.create!(
name: args[:name],
description: args[:description],
abv: args[:abv],
url: args[:ur],
)
end
end
Я что-то упустил в другом месте?
ОБНОВЛЕНИЕ ЕслиЯ изменяю мутацию, чтобы удалить "из примерно 40, то есть, так что в виде целого числа, а не строки, я получаю следующее сообщение об ошибке:
{
"data": {
"createGin": null
},
"errors": [
{
"message": "Cannot return null for non-nullable field Gin.url"
}
]
}