Ruby on rails 理解GraphQL-RubyonRails中的“上下文”

Ruby on rails 理解GraphQL-RubyonRails中的“上下文”,ruby-on-rails,ruby,graphql,Ruby On Rails,Ruby,Graphql,我正在阅读GraphQL变异部分,我不明白这部分中的上下文是什么,以及上下文[:current_user]返回什么 这是示例代码: 类别突变::启动子员工

我正在阅读GraphQL变异部分,我不明白这部分中的上下文是什么,以及上下文[:current_user]返回什么

这是示例代码:

类别突变::启动子员工<突变::碱基突变 def就绪?**args 用变异参数调用。 使用关键字参数,如employee_id:或**参数来收集它们 如果上下文[:当前用户].admin? raise GraphQL::ExecutionError,只有管理员才能运行此操作 其他的 返回true以继续突变: 符合事实的 终止 终止 ... 终止
这是向导链接:

您可以将特定于应用程序的值作为上下文提供给GraphQL:。这在许多地方都可用:

解析函数 Schemaresolve_型挂钩 ID生成和获取 上下文的常见用途:包括当前用户或身份验证令牌。要提供context:value,请将哈希传递给Schemaexecute:

    # graphql_controller.rb

    context = {
      current_user: session[:current_user],
      current_organization: session[:current_organization],
    }

    MySchema.execute(query_string, context: context)

然后,您可以在执行期间访问这些值:


    field :post, Post, null: true do
      argument :id, ID, required: true
    end

    def post(id:)
      context[:current_user] # => #<User id=123 ... >
      # ...
    end


请注意,上下文不是您传递它的哈希。它是{{GraphQL::Query::Context | api_doc}的一个实例,但它将[]、[]=、和其他一些方法委托给您提供的哈希。

我只想知道在这种情况下,上下文是什么样子的?