ruby-on-rails - 带有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 上运行时,我想知道我现在使用的新版本是否会影响此配置。
解决方案
你在哪里定义context
关键字尝试定义它。
推荐阅读
- sql-server - 如何使用“赋予某些不同行相同的身份”的选项来创建计数器(身份)?
- python - 我的函数中的打印语句出现语法错误。我不知道我做错了什么
- vba - 使用两列创建字典并根据单元格值提取值
- python - 如何自定义 Python 的方法解析顺序(mro)?
- arrays - 如何检查数组是否有超过 2 个重复元素
- c# - 如何将字符串数组转换为泛型数组类型,同时允许非数组和数组作为类的泛型类型参数?
- java - 从主数组中删除对象的类
- ios - 如何检查我的 swift 代码在不同的 iOS 版本中是否正常工作?
- python - Pyinstaller“FileNotFoundError:[Errno 2]没有这样的文件或目录:”运行应用程序时
- java - 使用 Spring 中的规范按列排序