我有一个使用和项目模型。用户有很多项目。我正在尝试了解 Graphql。
我正在使用敲门宝石进行身份验证。我正在从 graphql 控制器的上下文中传递 current_user 。
这是代码
module Resolvers
class Projects < GraphQL::Function
type !types[Types::ProjectType]
argument :with_title, types.String
argument :with_description, types.String
# def render_results(title: nil, description: nil, user: nil)
# return user.projects.find_with_title(title) if title
# return user.projects.find_with_description(description) if description
# return user.projects.all if title.nil? && description.nil?
# return user.projects.all
# end
def call(_obj, args, ctx)
title = args['with_title']
description = args['with_description']
binding.pry
# render_results(title: title, description: description, user: ctx[:curent_user])
ctx[:current_user].projects
end
end
end
ctx[:current_user]
总是出现nil
NoMethodError (undefined method `projects' for nil:NilClass):
但是当我使用 pry 调试时,它确实有当前用户,我可以毫无问题地调用 ctx[:current_user].projects 。我在这里想念什么?
需要注意的几点。我没有定义 UserType。我只有 ProjectType。但它不应该像这样工作吗?