authenticate_user!で書くアレと、move_to_index(じゃなくてもいいけどこの名前でよく作ってる)アレの使い途がごっちゃになっていたので整理してみたくなり。
まずは、authenticate_user!について書いてみる。
##authenticate_user!
deviseを導入していると使えるメソッド。
処理が呼ばれた段階で、そのユーザーがログインしていなければ、ログイン画面に強制的に飛ばせます(っ'-')╮=͟͟͞͞ポイッ
書く場所はApplicationController。
どのコントローラーで処理するにも共通した処理を書ける場所。
便利だなと思う反面、影響力強い×触る頻度少ないのでいつもどきどきしながら書く。
class ApplicationController < ActionController::Base
before_action :basic_auth
before_action :configure_permitted_parameters, if: :devise_controller?
before_action :authenticate_user!, only:[:show, :new] # ←ココ
private
def basic_auth
xxxxx
end
def configure_permitted_parameters
xxxxx
end
end
onlyとはこのbefore_action :authenticate_user!
が発動する機会を限定するもの。
この書き方だと、showアクション、newアクションの時のみauthenticate_user!が動きます。
onlyで指定するのが1つだけのときはonly: :show
と書く。:と:の間スペース空けるの忘れないように。
exceptで限定することもできる。
before_action :authenticate_user!, except: :index
こんな感じ。
exceptは「コレには適用しない」というonlyと逆の使い方。
↑の場合はindexアクション以外の時はauthenticate_user!が動きます。
最初↑↑のonlyの書き方をしていたけど、今回私の作っているのはindex以外はログインしないと見れない、で良かったのでこの記事書きながら変更しましたっ。
##まとめ
・authenticate_user!でログインしていないユーザーを、ログイン画面に強制的に飛ばせる(*deviseを導入してること)
・書く場所はApplicationController
・onlyまたはexceptを使うと発動する機会を限定できる
こんな感じでしょうか!
間違ってること、もっとこうしたらいいよというアドバイスなどありましたら、コメントいただけると嬉しいです!
では、また次の投稿で。