首页 > 解决方案 > 带有graphql的“nil:NilClass的未定义方法`[] ='”

问题描述

当我尝试通过 graphiql 登录时遇到此问题,控制台中出现的错误位于以下行:

突变/sign_in_user.rb:27:in `resolve'" context[:session][:token] = token

登录服务的配置如下:

    module Mutations
        class SignInUser < BaseMutation
        null true

        argument :credentials, Types::AuthProviderCredentialsInput, required: false

        field :token, String, null: true
        field :user, Types::UserType, null: true

        def resolve(credentials: nil)
            # basic validation
            return unless credentials

            user = User.find_by email: credentials[:email]
            puts '---userrr------- ' + user.email.to_s
            return Errors unless user

            # ensures we have the correct user
            return unless user
            return unless user.authenticate(credentials[:password])

            # use Ruby on Rails - ActiveSupport::MessageEncryptor, to build a token
            crypt = ActiveSupport::MessageEncryptor.new(Rails.application.secrets.secret_key_base.byteslice(0..31))
            token = crypt.encrypt_and_sign("user-id:#{ user.id }")
            puts '---------------- ' + token

            context[:session][:token] = token

            { user: user, token: token }
        end
        end
    end

当我第一次在 Rails 5.1.7 中运行但现在在 6.0 上运行时,我想知道我现在使用的新版本是否会影响此配置。

标签: ruby-on-railsgraph

解决方案


你在哪里定义context关键字尝试定义它。


推荐阅读