如果尝试批量分配 attr_accessible 不允许的属性,是否有办法让 rails 引发错误?
这在开发中会很方便,以提醒我为什么我闪亮的新模型无法正常工作,并且还可以很好地登录生产以检测恶意活动。
我正在使用 rails 2.3.8,但可能很快就会迁移到 3。
如果尝试批量分配 attr_accessible 不允许的属性,是否有办法让 rails 引发错误?
这在开发中会很方便,以提醒我为什么我闪亮的新模型无法正常工作,并且还可以很好地登录生产以检测恶意活动。
我正在使用 rails 2.3.8,但可能很快就会迁移到 3。
从 Rails 3.2 开始,这不再需要猴子补丁——rails 现在提供了这种行为。把它放在development.rb和test.rb中:
config.active_record.mass_assignment_sanitizer = :strict
我建议将 Bento 项目之类的东西整合到他们的 Rails 应用程序中。
他们在 config/initializers/ 下创建 Rails Initializer,然后覆盖 ActiveModel 类中的适当方法以引发 MassAssignmentError(在非生产环境中)。
我不确定这是否可行,但您可以编写一个测试来查看您的对象是否“respond_to(:unexpected_attr)”。然后,您可以尝试强制喂它 attr
亚历克斯