2

パラメーターに基づいてオブジェクトを作成し、それをコントローラーの update メソッド内の update_attributes メソッドに渡しました。オブジェクトには、モデルの attr_accessible リストの一部としてリストされていない 1 つの属性 (xyz) がありました。Rails は問題の属性の更新をスキップし、属性 xyz の一括割り当てが失敗したという警告を生成しました。

この種の状況が発生した場合、警告を受け取るだけでなく、 update_attributes が失敗することを確認したいと思います。これを実現するために update_attributes 呼び出しに渡すことができる構成設定またはオプションはありますか?

4

2 に答える 2

4

例外を発生させるサニタイザーを使用するように構成を変更できます。

config.active_record.mass_assignment_sanitizer = :strict

編集:これは 3.2 以降で利用可能です。あなたの質問は Rails 3.1 でタグ付けされているため、機能しません。3.2 にアップグレードするか、サニタイザーにパッチを適用する方法についてこのSO の質問をご覧ください。

于 2012-08-03T22:09:52.353 に答える
2

mass_assignment_sanitizer=を使用して独自の mass_assignment_sanitizer を設定します。例については active_model/mass_assignment_security/sanitizer.rb を参照し、失敗する独自の Sanitizer のセットアップ方法については active_model/mass_assignment_security.rb を参照してください。

于 2012-08-03T21:58:42.330 に答える