16
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

[devise_token_auth]ヘルパーメソッドが使えない(undefined)ときの対処法

Last updated at Posted at 2019-09-14

公式のドキュメントをちゃんと読めばわかる内容ですが、地味にはまったので書きます…:weary:

発生したエラー

ログインしたユーザーのみアクセス可能にしたpostsコントローラにリクエストを送ったところ以下のようなエラーが出ました。

NoMethodError (undefined method `authenticate_user!' for #<Api::V1::PostsController:0x00007f0a5806dee8>):

解決策

どうやらdevise_token_authのヘルパーメソッドを記述するときはroute.rbの内容次第で変更しなければならないようです。
僕のルートは

routes.js
Rails.application.routes.draw do
  devise_for :users

  namespace :api do
    namespace :v1 do
      mount_devise_token_auth_for 'User', at: 'auth', controllers: {
        registrations: 'api/v1/auth/registrations'
      }
      resources :posts
    end
  end
  # For details on the DSL available within this file, see http://guides.rubyonrails.org/routing.html
end

という感じになっています。
namespaceが使われているので/api/v1/authとのようになります。
この時、ヘルパーメソッドを以下の様に変更しなくてはなりません

before after
before_action :authenticate_user! before_action :authenticate_api_v1_user!
current_user current_api_v1_user

まとめ

英語のドキュメントばかりで大変でしたが、この記事が日本の駆け出しエンジニアの助けになれば幸いです!

16
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
16
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?