【问题标题】:Rails and attr_accessible: is there a way to raise an exception if a non-mass-assignable attribute is mass-assigned?Rails 和 attr_accessible:如果不可批量分配的属性被批量分配,有没有办法引发异常?
【发布时间】:2011-03-29 09:44:10
【问题描述】:

如果尝试批量分配 attr_accessible 不允许的属性,是否有办法让 rails 引发错误?

这将在开发中方便地提醒我为什么我闪亮的新模型无法正常工作,并且还可以登录生产以检测恶意活动。

我正在使用 rails 2.3.8,但可能很快就会迁移到 3。

【问题讨论】:

    标签: ruby-on-rails ruby exception attr-accessible


    【解决方案1】:

    从 Rails 3.2 开始,这不再需要猴子补丁——rails 现在提供了这种行为。把它放在 development.rbtest.rb 中:

    config.active_record.mass_assignment_sanitizer = :strict
    

    【讨论】:

      【解决方案2】:

      我建议something like the Bento project has incorporated into their Rails app

      他们在 config/initializers/ 下创建 Rails Initializer,然后覆盖 ActiveModel 类中的适当方法以引发 MassAssignmentError(在非生产环境中)。

      【讨论】:

      • 猴子补丁不再需要,耶! config.active_record.mass_assignment_sanitizer = :strict
      【解决方案3】:

      我不确定这是否可行,但您可以编写一个测试来查看您的对象是否“respond_to(:unexpected_attr)”。然后你可以尝试强制喂它 attr

      亚历克斯

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-08-05
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多