初めに
なぜこの記事を書きたかったのか
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投稿はハードルが高かったみたいだ、、まとめてメモして時間があるときにやろう!
ココまで読んでくださいましてありがとうございます!