【Rails】skip_before_action

skip_before_action

コントローラに記述することで、before_actionを除外したいアクションを指定できるメソッド。

例. application_controllerにbefore_actionでrequire_loginというインスタンスメソッドを定義する場合

このインスタンスメソッドが未ログインかどうかを判定するために実行するものだとしたら、

ログイン画面ではそれを実行する必要がないため、

logins_controllerで以下のようにskip_before_actionを記述する。

class LoginsController < ApplicationController
  skip_before_action :require_login, only: [:new, :create]
end

→logins_controllerのnewアクション、createアクションではbefore_actionのrequire_loginを実行しないように設定している。

参考

上記のコードはこのRailsガイドの 8. フィルタ の章から、require_loginの詳細なコードも掲載されてます。


スクールの友人が使っているのを見て、そのうちどっかで使えるかもと思ったので記事にしてみました。

自分で調べないと忘れてしまうからね……。

ところでこのskip_before_actionやbefore_action、Railsのどのファイルで定義されているんだろう?

source_locationメソッドで探そうとしても、以下のようなエラーが出て見つからない……。

$ rails c

[1] pry(main)> ''.method(:skip_before_action).source_location
NameError: undefined method `skip_before_action' for class `String'