Skip to content

Mutations

By default, Quail generates create, update, and delete mutations for every resource that declares writable_attributes. You can customize this behavior per resource.

Skip mutations you don’t need:

class ArticleResource
include Quail::Resource
attributes :id, :title, :body
writable_attributes :title, :body
skip_mutations :delete
end

Override a mutation with your own class:

class ArticleResource
include Quail::Resource
attributes :id, :title, :body
override_mutation :create, CreateArticle
end
app/graphql/mutations/create_article.rb
class CreateArticle < Quail::Mutation
graphql_name "CreateArticle"
argument :title, String, required: true
argument :body, String, required: true
field :article, ArticleResource.graphql_type, null: true
field :errors, [String], null: false
def resolve(title:, body:)
article = Article.new(title: title, body: body)
if article.save
{ article: article, errors: [] }
else
{ article: nil, errors: article.errors.full_messages }
end
end
end