我花了很多时间尝试解决模型中的虚拟属性问题。原来我只是忘了把它添加到模型中的attr_accesible。当然,我应该早点或更好地抓住它,首先应该通过将它添加到attr_accessible来开始整个过程。
为了防止这种情况再次发生,是否有一个配置设置我可以标记为在开发时抛出异常,如果我尝试批量分配并在受保护/不可访问时验证它?我知道我可以使用set config.active_record.whitelist_attributes = true
来为所有人设置白名单,但我的问题更多是基于个别属性。
例如,如果我有一个带有attr_accessible的模型,则上面的行不会发出警告:name然后添加:nickname(virtual或not),并尝试批量指定它检查presence => true。我希望它警告我,我试图通过质量分配来验证受保护的属性。
答案 0 :(得分:6)
Rails 3.2有一个配置选项,可以在这种情况下引发ActiveModel::MassAssignmentSecurity::Error
config.active_record.mass_assignment_sanitizer = :strict