1. ホーム
  2. ruby-on-rails

[解決済み] Railsのいくつかのコントローラでskip_before_actionを使用しますか?

2022-02-18 02:30:45

質問

こんにちは、アプリのAPIセクションを構築しています。apiに関連するすべてのコントローラは、以下の中にあります。 app/controllers/api ディレクトリを作成します。

私が懸念しているのは application_controller というフィルターがあります。 before_action :authenticate_user! そのため、apiにアクセスするにはログインモードでなければなりません。

私の現在の解決策 を追加しています。 skip_before_action :authenticate_user! にあるすべてのコントローラで app/controllers/api ディレクトリを作成します。

問題あり。 全コントローラに記述する必要があり、約80個のコントローラがあります。

私の期待 に書き込む方法はありますか? application_controller それ自体は次のようなものです。 before_action :authenticate_user!, except: [ ]です。 all the controllers which are in api directory ]

解決方法は?

を指定する必要があります。 skip_before_action :authenticate_user! を、アクションが認証されないことを想定しているすべてのコントローラで使用します。の引数として、コントローラ名などを渡すことはできません。 skip_before_action メソッドを使用します。

1つの解決策は、次のようなコントローラを作成することです。 APIController を指定し、さらに skip_before_action のようなものがあります。

class APIController < ApplicationController
  skip_before_action :authenticate_user!
  # rest of the code
end

そして、すべてのコントローラを app/controllers/api/ を継承することができます。 APIController .

class OtherController < APIController
end