我构建了一个基于参数的对象,并在我的控制器的update方法中将其传递给update_attributes方法。该对象具有一个属性(xyz),该属性未作为模型中attr_accessible列表的一部分列出。 Rails跳过更新有问题的属性并生成一个警告,即属性xyz的批量分配失败。
我想确保update_attributes在发生这种情况时失败,而不仅仅是收到警告。是否有配置设置或可以传递给update_attributes调用的选项以实现此目的?
答案 0 :(得分:4)
您可以更改配置以使用会引发异常的清洁剂:
config.active_record.mass_assignment_sanitizer = :strict
编辑:自3.2起可用。你的问题用rails 3.1标记,所以它不起作用。你可以升级到3.2,或者看看这个SO question如何修补消毒剂。
答案 1 :(得分:2)
使用mass_assignment_sanitizer=设置您自己的mass_assignment_sanitizer,您可能需要查看active_model / mass_assignment_security / sanitizer.rb以获取示例,并查看active_model / mass_assignment_security.rb以了解如何设置自己将失败的Sanitizer。