LoginSignup
5
5

More than 5 years have passed since last update.

Strong Parameters で許可されていない属性がある場合に例外を発生させる方法

Last updated at Posted at 2013-04-08
  • ruby 1.9.3p392
  • Rails 4.0.0.beta1

Rails4で標準になったStrong Parametersですが、これのせいで知らなぬ間に重要な属性が弾かれており結構ハマってしまいました。

特に、accepts_nested_attributes_forを使い出すと必ずハマるのではないでしょうか。

以下の様なログは生成されているのですが、普段からあまりログを見ていないので気づきませんでした。

nameがpermitされていないときのログ
Unpermitted parameters: name

どうせなら例外を発生させてもよいのではないでしょうか。
調べてみたら、結構簡単に例外を発生させることができました。

以下の設定になります。

config/initializers/strong_parameters.rb
ActionController::Parameters.action_on_unpermitted_parameters = :raise

上記のファイルを作成してサーバ再起動すればOKです。
このパラメータはデフォルトで :log に設定されています。# 開発とテスト環境でのみ?

注意ですが、意図的に許可しない属性がある場合でも例外が発生しますので、その場合は設定を解除してください。

参考:
http://edgeapi.rubyonrails.org/classes/ActionController/Parameters.html

5
5
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
5
5