11

无论如何禁用使用强参数?

而且我知道这是一个安全漏洞,但我真的不需要它/想要它。

4

6 回答 6

48

关闭属性保护几乎总是一个坏主意。

有了这个强制性说明,以下是关闭它的方法:

config.action_controller.permit_all_parameters = true

把这个放在config/application.rb

于 2013-09-11T21:05:46.800 回答
6

我遇到了这个问题,我试图从 Stripe 的 webhook 存储所有参数。

如果您想允许单个实例的所有参数,您可以在 params 对象上调用 #to_hash,然后再将其传递给您的初始化方法。

前任:

@my_object = MyObject.new(params[:my_object].to_hash)
于 2014-12-04T21:12:31.883 回答
4

如果“禁用”是指回退到 Rails 3 风格的attr_accessible行,那么是的。

只需使用protected_attributes gem。

于 2013-08-07T00:38:33.023 回答
2

我不这么认为。

DHH在此拉取请求上发表评论,为强参数添加禁用开关

无论如何,所有这些都是遗留问题,因为 Rails 4.0 将强制每个人都使用强参数,而您将无法将其关闭。

于 2013-08-07T00:34:44.290 回答
1

要停止为您的应用程序检查禁止的属性,您可以修补检查..

例如将以下代码放入

config/initializers/disable_strong_parameters.rb

module ActiveModel
  module ForbiddenAttributesProtection
    protected
      def sanitize_for_mass_assignment(attributes)
          attributes
      end
      alias :sanitize_forbidden_attributes :sanitize_for_mass_assignment
  end
end
于 2016-05-19T12:46:38.070 回答
-2

当然可以!根据强参数的官方文档(https://github.com/rails/strong_parameters),您可以通过将以下代码添加到您的 config/application.rb 来禁用:

config.active_record.whitelist_attributes = false

它适用于我在 rails 3.2

于 2014-05-21T07:37:19.693 回答