0
0

More than 1 year has passed since last update.

[Rails]before_actionとは?

Last updated at Posted at 2021-09-23

初めに

なぜこの記事を書きたかったのか

controllerの使い方の復習のため

環境

・Macbook Air (Retina, 13-inch,2019)
・プロセッサ 1.6GHz デュアルコアIntel Core i5
・メモリ 8GB 2133 Mhz LPDDR3
・MacOS Big Sur バージョン 11.5.2

記事の目次

1)どういうときに使うのか
2)どう使うの?
3)いろんなオプション
4)最後に

どういうときに使うのか

全てのアクション前に行動できるようになる(controller内にしか使えない)

どんなシチュエーションがあるのか?
・(前提:ログイン機能がある)ページ遷移するとき、ログインしていないuserをログイン画面へ強制遷移させる
・(前提:userが個人情報を記入する)userが記入したニックネーム(個人情報)を遷移先へもって来る

どう使うの?

before_actionは2つの使い方がある

1)もう機能が入っているメソッド名をつかう
・下記のauthenticate_user!メソッドを使うことで、userがログインしていなければ、そのuserをログイン画面へ強制的に遷移させることができる。(詳しいことは→https://qiita.com/janani/items/474ceccf97af8bc91a7f)

(ログインしていなければ、ログイン画面へ強制遷移!)
before_action :authenticate_user!

2)自分でメソッド名を作り、命令式を自分で作る

(作り方)
before_action :メソッド名1, オプション名:オプションによって記述内容が変わる

private

def メソッド名1
命令式
end

いろんなオプション

onlyオプション

指定したメソッド名を特定のアクションにだけ使いたいときにつかう

before_action :find_nickname, only[:index, :show]

private

def find_nickname
命令式
end

exceptオプション

onlyオプションの逆で特定のアクションにだけ使用できないようにするときにつかう

before_action :find_nickname, except[:new, :edit, :create, :update, :destroy]

private

def find_nickname
命令式
end

ifオプション

条件をつけて、そのときにだけ使えるようにできる(返り値がtrueのとき)

before_action :find_nickname, if:メソッド名

private

def find_nickname
命令式
end

unlessオプション

ifオプションの逆で条件をつけて、そのときの結果がfalseのときに使用できる

before_action :find_nickname, unless:メソッド名

private

def find_nickname
命令式
end

最後に

qiitaを一日2投稿はハードルが高かったみたいだ、、まとめてメモして時間があるときにやろう!

ココまで読んでくださいましてありがとうございます!

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