LoginSignup
1
1

More than 1 year has passed since last update.

【Rails API】devise_token_authで作成したコントローラにルーティングを追加したい【memo】

Last updated at Posted at 2022-01-25

課題

  • ゲストログインを実装する際に、既存のsessions_controller.rbにメソッドを追加する
api/v1/users/auth/sessions_controller.rb
# frozen_string_literal: true

class Api::V1::Users::Auth::SessionsController < DeviseTokenAuth::SessionsController

# 今回はこれを追加!
+ def guest_sign_in
+   # ゲストログイン処理
+ end

end

問題

ルーティングをなかなか追加することができませんでした。

devise_scope :userと記載したのですが、なかなかうまくいかず・・・。

routes.rb
Rails.application.routes.draw do
  namespace :api do
    namespace :v1 do

-     devise_scope :user do
-       post 'users/guest_sign_in', to: 'users/auth/sessions#guest_sign_in'
-     end

      mount_devise_token_auth_for 'User', at: 'user/auth', controllers: {
        registrations: 'api/v1/users/auth/registrations',
        sessions: 'api/v1/users/auth/sessions',
        confirmations: 'api/v1/users/auth/confirmations',
        passwords: 'api/v1/users/auth/passwords'
      }

    end
  end
end

解決策

devise_scope :api_v1_userと記載すると追加することができました。

routes.rb
# frozen_string_literal: true

Rails.application.routes.draw do
  namespace :api do
    namespace :v1 do

+       devise_scope :api_v1_user do
+         post 'users/guest_sign_in', to: 'users/auth/sessions#guest_sign_in'
+       end

      mount_devise_token_auth_for 'User', at: 'user/auth', controllers: {
        registrations: 'api/v1/users/auth/registrations',
        sessions: 'api/v1/users/auth/sessions',
        confirmations: 'api/v1/users/auth/confirmations',
        passwords: 'api/v1/users/auth/passwords'
      }

    end
  end
end

devise_scope :user で追加できるものと思っていたので、かなり時間を取られました。

namespceの影響がここまで来るとは思いませんでした・・。

1
1
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
1
1