4

ActiveRecord を使用する場合、次の行を に追加することで、テストで一括代入の例外を発生させるように構成できますconfig/environments/test.rb

config.active_record.mass_assignment_sanitizer = :strict

Mongoid で同じことを達成する方法はありますか?

4

1 に答える 1

4

コードを読んでみると、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にサニタイザーの参照が見つかりません。

于 2012-08-25T09:59:45.647 に答える