使用ActiveRecord时,您可以将其配置为通过将此行放在config/environments/test.rb
中来引发测试中质量分配的异常:
config.active_record.mass_assignment_sanitizer = :strict
有没有办法用Mongoid完成同样的事情?
答案 0 :(得分:4)
通过阅读代码,Mongoid使用ActiveModel进行质量分配保护。这与Rails完全相同,但似乎配置没有完全连接起来。
从实施中我可以收集这是发生的事情:
attributes.rb assign_attributes
调用processing.rb。
processing.rb
然后调用active_model sanitizer中呼叫结束的sanitize。
应该引发异常的方法是:process_removed_attributes被strict sanitizer class或logging sanitizer覆盖。
您现在只需要了解如何配置Mongoid以在这种情况下使用strict_sanitizer。我正在进一步调查,但似乎严格来说这是一个active_model配置,与Mongoid无关。
在您的情况下,有效但不理想的是在模型上分配mass_assignment_sanitizer
:
Modelname.mass_assignment_sanitizer = :strict
但这只会改变这个模型。 我在mongoid config中找不到任何消毒剂参考。