使用Mongoid时,在测试中提高质量赋值的异常

时间:2012-08-24 01:57:07

标签: ruby-on-rails ruby mongodb mongoid

使用ActiveRecord时,您可以将其配置为通过将此行放在config/environments/test.rb中来引发测试中质量分配的异常:

config.active_record.mass_assignment_sanitizer = :strict

有没有办法用Mongoid完成同样的事情?

1 个答案:

答案 0 :(得分:4)

通过阅读代码,Mongoid使用ActiveModel进行质量分配保护。这与Rails完全相同,但似乎配置没有完全连接起来。

从实施中我可以收集这是发生的事情:

attributes.rb assign_attributes调用processing.rb

processing.rb然后调用active_model sanitizer中呼叫结束的sanitize。 应该引发异常的方法是:process_removed_attributesstrict sanitizer classlogging sanitizer覆盖。

您现在只需要了解如何配置Mongoid以在这种情况下使用strict_sanitizer。我正在进一步调查,但似乎严格来说这是一个active_model配置,与Mongoid无关。

在您的情况下,有效但不理想的是在模型上分配mass_assignment_sanitizer

Modelname.mass_assignment_sanitizer = :strict

但这只会改变这个模型。 我在mongoid config中找不到任何消毒剂参考。