- 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