ActiveRecord を使用する場合、次の行を に追加することで、テストで一括代入の例外を発生させるように構成できますconfig/environments/test.rb
。
config.active_record.mass_assignment_sanitizer = :strict
Mongoid で同じことを達成する方法はありますか?
ActiveRecord を使用する場合、次の行を に追加することで、テストで一括代入の例外を発生させるように構成できますconfig/environments/test.rb
。
config.active_record.mass_assignment_sanitizer = :strict
Mongoid で同じことを達成する方法はありますか?
コードを読んでみると、Mongoid は一括代入の保護に ActiveModel を使用しています。それは Rails とまったく同じことですが、構成が完全に接続されていないようです。
実装から収集できたのは、次のようなことです。
attributes.rbは processing.rbassign_attributes
を呼び出します。
processing.rb
次に、active_model サニタイザーを呼び出します。呼び出しは、サニタイズで終了します。例外を発生させるメソッドは、厳密なサニタイザー クラスまたはロギング サニタイザーによってオーバーライドされるprocess_removed_attributesです。
この場合、strict_sanitizer を使用するように Mongoid を構成する方法を見つける必要があります。さらに調査していますが、これは厳密に言えば active_model 構成であり、Mongoid とは何の関係もないようです。
あなたの場合、うまくいくが理想的ではないのはmass_assignment_sanitizer
、モデルに を割り当てることです:
Modelname.mass_assignment_sanitizer = :strict
しかし、これはこの 1 つのモデルだけを変更します。mongoid configにサニタイザーの参照が見つかりません。