# https://github.com/jaydenseric/apollo-upload-client # sends params[:operations] on multipart submission # fix query and variables before the #execute # params["variables.file"] is a regular ActionDispatch::Http::UploadedFile object def execute context = { # Query context goes here, for example: # current_user: current_user, } if params[:operations].present? operations = ensure_hash(params[:operations]) variables = { "input" => operations[:variables]. merge({"file" => params["variables.file"]}) } query = operations[:query] else variables = ensure_hash(params[:variables]) query = params[:query] end result = YourRailsAppSchema.execute(query, variables: variables, context: context) render json: result end