0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Railsの仕様によるエラーの解決方法

Last updated at Posted at 2024-09-14

Rails7のAPIモードで発生したエラーをメモ。
必要に応じて随時追加していきます。

authenticate_user!がundefindになる現象

ルーティングで下記のように名前空間を設定しているため

Rails.application.routes.draw do
  namespace :api do
    namespace :v1 do
      
        devise_scope :api_v1_user do
          post 'auth/guest_sign_in', to: 'auth/sessions#guest_sign_in'
          get '/auth/sessions', to: 'auth/sessions#index'
        end

        mount_devise_token_auth_for 'User', at: 'auth', skip: [:omniauth_callbacks], controllers: {
          registrations: 'api/v1/auth/registrations',
          sessions: 'api/v1/auth/sessions',
          confirmations: 'api/v1/auth/confirmations',
          passwords: 'api/v1/auth/passwords'
        }
        resources :boards, only: %i[index create update destroy] 

コントローラーの方でも記述を合わせる必要がある。

before_action :authenticate_api_v1_user!
#名前空間に会わせる

    def index
        boards = current_api_v1_user.boards
        #アクションも名前空間に合わせる
        render json: boards, status: :ok
    end

参考記事

存在しないコールバックを探すせいでエラーになる

アクションがない状態でコールバックを設定しているとエラーになる。
「先にindexアクションだけ作って後からupdateアクションを作ろう。でもコールバックだけ先に全部のアクションに設定しておくか」と考えて作業してたらエラーになった。

before_action :set_board, only: %i[update destroy] 
#上記の場合、updateアクションがないとエラーになる
#この場合はupdateとdestroyアクションの両方があれば成功する

参考記事

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?