質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Devise

Deviseとは、Ruby-on-Railsの認証機能を追加するプラグインです。

GraphQL

GraphQL は、アプリケーション・プログラミング・インタフェース (API) 向けのクエリ言語およびサーバーサイドランタイムです。APIの速度、柔軟性、開発者にとっての使いやすさを向上させるために設計され、データを複数のデータソースから取得するリクエストを1つのAPI呼び出しで構成できます。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Q&A

0回答

632閲覧

context[:current_resource]が使えないなぜ?(undefined local variable or method `current_user')

koyo

総合スコア8

Devise

Deviseとは、Ruby-on-Railsの認証機能を追加するプラグインです。

GraphQL

GraphQL は、アプリケーション・プログラミング・インタフェース (API) 向けのクエリ言語およびサーバーサイドランタイムです。APIの速度、柔軟性、開発者にとっての使いやすさを向上させるために設計され、データを複数のデータソースから取得するリクエストを1つのAPI呼び出しで構成できます。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

0グッド

0クリップ

投稿2021/02/25 06:47

編集2021/02/25 13:14

graphql-deviseを導入していますが、下記のよう設定をしてもcontext[:current_resource]を使えません
なぜでしょうか・

configration

自分のschemaにdeviseを導入しています。

class MySchema < GraphQL::Schema use GraphqlDevise::SchemaPlugin.new( query: Types::QueryType, mutation: Types::MutationType, resource_loaders: [ GraphqlDevise::ResourceLoader.new('User'), ], authenticate_default: false ) mutation(Types::MutationType) query(Types::QueryType) # Setup GraphQL to use the built-in lazy_resolve method use BatchLoader::GraphQL end

route.rb:

Rails.application.routes.draw do # For details on the DSL available within this file, see https://guides.rubyonrails.org/routing.html # For graphql if Rails.env.development? mount GraphiQL::Rails::Engine, at: "/graphiql", graphql_path: "/graphql" end post "/graphql", to: "graphql#execute" get "/graphql", to: "graphql#execute"

graqhql_controller.rb:

def execute variables = ensure_hash(params[:variables]) query = params[:query] operation_name = params[:operationName] result = BusinessCloudSchema.execute(query, variables: variables, context: graphql_context(:user), operation_name: operation_name) render json: result unless performed? rescue => e raise e unless Rails.env.development? handle_error_in_development e end

user_update_input.rb

module Types class UserUpdateInput < Types::BaseInputObject argument :fist_name, String, required: true argument :last_name, String, required: true argument :position, String, required: false argument :image, ApolloUploadServer::Upload, required: false def update! current_user = context[:current_resource] current_user.assign_attributes(first_name: first_name, last_name: last_name, image: valid_image) current_user.update { errors: user_errors(current_user.errors), user: current_user.reload } end private def valid_image image if image&.is_a?(ApolloUploadServer::Wrappers::UploadedFile) end end end

update_user.rb

module Mutations class UpdateUser < BaseMutation field :user, Types::UserType, null: true argument :user, Types::UserUpdateInput, required: true def resolve(user:) { user: user.update! } end end end

下記クエリを実行しても動きません。

mutation{ updateUser(input: { clientMutationId: "", user: {fistName: "aa", lastName: "bb", position: "manager"}}) { clientMutationId user{ email firstName image lastName position } } }

context[:current_user]としてもnillになります。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問