Sun~sun~Flower's

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

MENU

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

f:id:mTakata:20200318133852j:plain

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

 

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

例題

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

 

```Rails(Ruby)
class ApplicationController < ActionController::Base
before_action :configure_permitted_parameters , if: :devise_controller?

def configure_permitted_parameters
devise_parameter_sanitizer.permit(:sign_up, keys: [:nickname, :avatar])
end
end ```
 

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

解説

ApplicationControllerを継承しているコントローラー(ranking, users, およびdevise用のコントローラー)内の全てのアクションが実行される前に、

 

before_actionが実行されます。

 

before_actionとは、直訳すると「前のアクション」です。

 

つまり、それぞれのメソッドを使う前に呼ばれるアクションの事です。

 

もしそれが、deviseのコントローラーだったら(devise_controller?というメソッドの返り値がtrueだったら)configure_permitted_parametersを呼ぶという流れです。

 

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

 

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

補足

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

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

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

 

参考になれば、幸いです。

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