Sun~sun~Flower's

日々前向きに頑張る為のブログ

MENU

【初心者向け】【Railsアプリケーション】before_actionについて解説します。

f:id:mTakata:20200318133852j:plain

こんにちは。

当ページにアクセスしてくださり、ありがとうございます。

 

この記事は、プログラミング言語「Ruby」のフレームワーク「Rails」でよく利用するメソッド、「before_action」について解説致します。

 

【目次】

例題

Railsアプリケーションのコントローラーに関して以下のコードをみてください。

```Rails(Ruby)
1 class ApplicationController < ActionController::Base
2 before_action :configure_permitted_parameters , if: :devise_controller?
3
4 def configure_permitted_parameters
5 devise_parameter_sanitizer.permit(:sign_up, keys: [:nickname, :avatar])
6 end
7 end ```
 

 

上記のコードですが、何を実現しているのか解説していきますね。

解説

1行目でApplicationControllerクラスは、ActionControllerクラスを継承していることが分かります。

 

2行目で、このbefore_actionメソッドが使われています。

 

before_action = 直訳してみると「前のアクション」という感じですね

 

つまりこれは、それぞれのアクション(メソッド)を実行する前に呼ばれるメソッドです。

 

ApplicationControllerを継承しているコントローラーであれば、そのコントローラーに定義されているアクションが実行される前に、before_actionが実行されます。

 

しかし、注意すべき箇所があります。

 

2行目に記載されている、「if: :devise_controller?」のコードです。

 

こちらのコードが意味するのは、

❗️アクションを呼び出す時、そのアクションが所属するコントローラーが「devise_controller」であれば、before_actionが先に実行されるという流れです。 

尚、devise_controller以外のコントローラーに所属するアクションが実施された場合は、before_actionは実行されません。

補足

configure_permitted_parametersの中で、devise_parameter_sanitizerが実行されるが、これはストロングパラメータのdevise版。

 

サインアップ時に、nicknameとavatarカラムへの保存を許可するようになります。

 

deviseのコントローラーは、デフォルトではアプリケーション内に作成されません。

 

興味がある方は、GitHubでソースコードを確認するとdeviseのコントローラーがApplictaionControllerを継承していることが確認できます。 

 

これを使えば、ログイン機能も実装できそうですね!!

まとめ

before_actionを使う理由はご存知ですか??

 

例えば、開発していく上で必ず、複数のアクション内で共通の処理を実行しなけらればならないという状況が発生します。

 

この状況を打開するためにあるのが、「before_action」メソッドです。

 

これを書くことで、アクションを実行する前に共通の処理を書いたメソッド(before_actionに記載したメソッド)を自動で実行してくれます。

 

同じコードを書く手間が省け、開発効率もあがります!

 

ぜひ、覚えておきたいメソッドですね!

 

以上になります、参考になれば幸いです。

 

最後まで読んで頂き、ありがとうございました。