class GraphQL::Schema::Mutation
This base class accepts configuration for a mutation root field, then it can be hooked up to your mutation root object type.
If you want to customize how this class generates types, in your base class, override the various ‘generate_*` methods.
@see {GraphQL::Schema::RelayClassicMutation} for an extension of this class with some conventions built-in.
@example Creating a comment
# Define the mutation: class Mutations::CreateComment < GraphQL::Schema::Mutation argument :body, String, required: true argument :post_id, ID, required: true field :comment, Types::Comment, null: true field :errors, [String], null: false def resolve(body:, post_id:) post = Post.find(post_id) comment = post.comments.build(body: body, author: context[:current_user]) if comment.save # Successful creation, return the created object with no errors { comment: comment, errors: [], } else # Failed save, return the errors to the client { comment: nil, errors: comment.errors.full_messages } end end end # Hook it up to your mutation: class Types::Mutation < GraphQL::Schema::Object field :create_comment, mutation: Mutations::CreateComment end # Call it from GraphQL: result = MySchema.execute <<-GRAPHQL mutation { createComment(postId: "1", body: "Nice Post!") { errors comment { body author { login } } } } GRAPHQL
Public Class Methods
visible?(context)
click to toggle source
# File lib/graphql/schema/mutation.rb, line 66 def visible?(context) true end
Private Class Methods
conflict_field_name_warning(field_defn)
click to toggle source
# File lib/graphql/schema/mutation.rb, line 72 def conflict_field_name_warning(field_defn) "#{self.graphql_name}'s `field :#{field_defn.name}` conflicts with a built-in method, use `hash_key:` or `method:` to pick a different resolve behavior for this field (for example, `hash_key: :#{field_defn.resolver_method}_value`, and modify the return hash). Or use `method_conflict_warning: false` to suppress this warning." end
generate_payload_type()
click to toggle source
Override this to attach self as ‘mutation`
Calls superclass method
# File lib/graphql/schema/mutation.rb, line 77 def generate_payload_type payload_class = super payload_class.mutation(self) payload_class end