Railsのdeviseというgemを導入する際に、Strong Parameters の設定のサンプルコードが記載されていましたが、僕の知らないメソッド呼び出しのコードだったので、どういう違いがあるのか調査していました。

調査してみたら古いバージョンのメソッドを使用していたので、今回はメソッドの違いなどをまとめておきたいと思います。

Strong Parameters とは

クライアントからサーバーにリクエストパラメーターを送信する際に、開発者側で意図しないパラメーターを送信できてしまわないよう、予め送信を許可するパラメーターを定めておくためのものです。

Rails4以降の定義方法

Rails4から、Strong Parameters を設定する方法が、devise_parameter_sanitizer.permitというメソッドに変更になったようです。

第一引数には、以下3つのいずれかのシンボルを指定します。

  • sign_in : Devise::SessionsController#create
  • sign_up : Devise::RegistrationsController#create
  • account_update : Devise::RegistrationsController#update

各シンボルは、deviseの各コントローラーの各アクションに対応しています。

例えば、Devise::SessionsController#createアクションが実行される前に送信されるパラメータに対して設定を行いたい場合は、sign_inを指定します。

「keys」という引数には、送信を許可するパラメーターをシンボルの配列で指定します。

例えば、user_nameというパラメーターの送信を許可したい場合は、以下のようなコードとなります。

devise_parameter_sanitizer.permit :sign_in, keys: [:user_name]

Rails4以前の定義方法

参考までにですが、Rails3までは以下の定義方法だったようです。

devise_parameter_sanitizer.for

Sanitizerとは

消毒液。殺菌剤。また、そのための容器のこと。

サニタイザーとは – コトバンク

一応どんな意味なのかなと思い確認してみましたが、何となく意味が通じて面白いですね。

更新日 : 2020年7月17日

投稿者: TWEI

趣味はプログラミング。 以前は仕事でプログラミングをやっていました。現在はWebエンジニアを目指して勉強中。 勉強で得た知識などをブログで発信していく予定です。

コメントをどうぞ

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA